Deepin 切换壁纸小工具

Linux Python Deepin 切换壁纸小工具 切换壁纸这种事,找到接口,一行代码就可以解决,本来打算用 bash 脚本,但是考虑到随机选取壁纸等因素,用 python 的 os 模块完成任务。 一、思路 找到切换壁纸的接口 设置壁纸库(文件夹) python 脚本完成功能 半小时触发脚本自动切换壁纸 二、实现过程 1、切换壁纸接口 本脚本只在 Linux 下使用。 在 Linux 下(准确说是 GNOME 桌面),通过 gsettings set 指令完成对特定值(壁纸文件位置)进行修改,即可修改壁纸。 # Ubuntu 下切换指令(注意有个 file) gsettings set org.gnome.desktop.background picture-uri "file:/home/user/Desktop/1.jpg" #Deepin 下切换指令(注意没有 file) gsettings set com.deepin.wrap.gnome.desktop.background picture-uri "/home/user/Desktop/1.jpg" 2、设置壁纸库 这步没什么好说的啊,把喜欢的壁纸放在一个文件夹下,方便之后的存取使用。 3、python 完成功能 直接上代码,看代码注释就好了。 # -*- coding: utf-8 -*- # @Date : 2018-05-21 12:07:17 # @Author : Light (halysl0817@gmail.com) # @Link : ${link} # @Version : $Id$ import os import random """ TODO(halysl0817@gmail.com):Change the wallpaper by changing the time 利用linux下的crontab工具实现半小时切换一次, */30 * * * * python /xxx/changebackground.py """ # 更换壁纸指令,此为deepin更换指令,不代表所有linux发行版更换指令 cmd = "gsettings set com.deepin.wrap.gnome.desktop.background picture-uri " # 图片目录,用户可自主更换 path = "/home/light/Documents/code/spider-on-lol/lolSpider/lolSpider/img/hero_skin_img/full/" # 利用os.listdir()方法获取图片目录下的所有文件名的列表 pic_list = os.listdir(path) # 确切的文件位置,以及确切的更换指令 real_path = path + str(random.choices(pic_list))[2:-2] real_cmd = cmd + "\"" + real_path +"\"" # 执行 os.system(real_cmd) 4、自动切换壁纸 利用 Linux 下的 crontab 完成定时任务。 ...

dmidecode 的使用

Linux dmidecode 的使用 dmidecode 命令可以让你在 Linux 系统下获取有关硬件方面的信息。dmidecode 的作用是将 DMI 数据库中的信息解码,以可读的文本方式显示。由于 DMI 信息可以人为修改,因此里面的信息不一定是系统准确的信息。dmidecode 遵循 SMBIOS/DMI 标准,其输出的信息包括 BIOS、系统、主板、处理器、内存、缓存等等。 DMI(Desktop Management Interface,DMI)就是帮助收集电脑系统信息的管理系统,DMI 信息的收集必须在严格遵照 SMBIOS 规范的前提下进行。SMBIOS(System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。SMBIOS 和 DMI 是由行业指导机构 Desktop Management Task Force(DMTF) 起草的开放性的技术标准,其中DMI设计适用于任何的平台和操作系统。 DMI 充当了管理工具和系统层之间接口的角色。它建立了标准的可管理系统更加方便了电脑厂商和用户对系统的了解。DMI 的主要组成部分是 Management Information Format(MIF) 数据库。这个数据库包括了所有有关电脑系统和配件的信息。通过 DMI,用户可以获取序列号、电脑厂商、串口信息以及其它系统配件信息。 语法 dmidecode [选项] 选项 -d:(default:/dev/mem)从设备文件读取信息,输出内容与不加参数标准输出相同。 -h:显示帮助信息。 -s:只显示指定DMI字符串的信息。(string) -t:只显示指定条目的信息。(type) -u:显示未解码的原始条目内容。 –dump-bin file:将DMI数据转储到一个二进制文件中。 –from-dump FILE:从一个二进制文件读取DMI数据。 -V:显示版本信息。 dmidecode参数string及type列表: Valid string keywords are: 下列选项,可通过 dmidecode -s xxx 来查看,对于特定的单项,更方便获取结果。 bios-vendor bios-version bios-release-date system-manufacturer system-product-name system-version system-serial-number system-uuid baseboard-manufacturer baseboard-product-name baseboard-version baseboard-serial-number baseboard-asset-tag chassis-manufacturer chassis-type chassis-version chassis-serial-number chassis-asset-tag processor-family processor-manufacturer processor-version processor-frequency Valid type keywords are: 下面选项,可通过 dmidecode -t xxx 来获取信息,一般是某一单类别硬件信息。 ...

find 的使用

Linux find 的使用 find 用于 Linux 的查找,它的使用方法比较多。 # 常规根据文件名查询 find / -name xxx # 查找文件夹 find / -name -type d xxx # 根据文件属性进行查找 find / -user root -ls find / -user root -group root -ls find / -uid 1 -gid 1 -ls find / -nouser -ls # 根据文件权限进行查找 find / -perm 755 -type f -ls find / -perm 750 -type d -ls find / -perm /750 -type d -ls # 表示任何一个目录只要其所有者具有读写执行中的任何一项权限,或是其所属组具有读和执行中的任何一项权限,就可以符合查找条件 find / -perm -750 -type d -ls # 表示所要查找的目录其所有者必须具有读写执行权限,同时其所属组必须具有读和执行权限,对其他用户的权限没有要求 link 根据文件属性或权限进行find查找

grafana-backup的使用

Linux Monitoring [[Grafana]] grafana-backup的使用 这个工具依赖于 grafana api 实现数据的备份和恢复,和服务具体的部署无关,仅需要接口地址和 token。(如果需要备份组织和用户则需要配置admin的账号密码)。 安装 两种方式: 直接安装 pip install grafana-backup 源码安装 git clone https://github.com/ysde/grafana-backup-tool.git cd grafana-backup-tool pip install . tip:centos7 安装pip以及换源 yum -y install epel-release yum install python-pip pip install --upgrade pip mkdir ~/.pip echo '[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple' > ~/.pip/pip.conf 备份 备份和恢复都需要依赖配置文件,这个工具支持三种方式: 环境变量 配置硬编码 ~/.grafana-backup.json 配置 推荐使用第三种方式。 一个简易的配置类似于: { "general": { "debug": true, "verify_ssl": true, "backup_dir": "_OUTPUT_", "backup_file_format": "%Y%m%d%H%M", "pretty_print": false }, "grafana": { "url": "http://{{ ip }}:{{ port }}", "token": "{{ token }}", "search_api_limit": 5000, "default_password": "00000000", "admin_account": "", "admin_password": "" } } 上述的配置中,需要根据实际情况填写ip和端口。token的申请则使用 grafana 的 admin 用户在 web 页面上申请 admin 权限的 API 即可拿到。大致的操作路径:Configuration –> API keys –> Add API key –> Role=admin –> Add。 ...

IBM x3650 m4 服务器网卡问题

Linux [[Server]] [[Hardware]] IBM x3650 m4 服务器网卡问题 问题描述 Bios 中显示四个网口都是正常 connected 状态。 系统为 Ubuntu 18.04 server 后,进入系统四个网口名为:eno2,eno3,eno4,eno5,且只有 eno3 可用。 有两台这个型号的机器,原先第一台出现这问题,我认为是其他三个网口坏了,但是第二台机器问题一模一样,让我产生了探究的心情。 解决过程 先从系统层面来看,手动配置 ip 信息,但无论怎么样网络都不会起变化,我也傻了,只有重启后才改变了网络(重启还导致了一个 glibc 的问题),但一直只有 eno3 可以连通。 再从硬件层面来看,先确认四个网口都可以连通(通过 Bios 里的数据查看),但是一进系统就只有一个口可以闪烁,去查下 IBM 的文档吧。 从文档和搜索结果来看,只想了 IMM 这个东西,也就是 Integrated Management Module。 最后经过一系列的操作,确实从这里解决了问题。 解决方案 简单版 开机按 F1 进入到 Bios,进入到 System Settings–>Integrated Manager Module 选择 Reset IMM to Defaults,然后确定,注意此时机器风扇会全负荷工作,噪音比较大 等声音消失就可以重启了 复杂版 开机按 F1 进入到 Bios,进入到 System Settings–>Integrated Manager Module–>Network Configuration 更改 Network Interface Port 为 Dedicated,Fail-Over Rule 为空 然后移动到最底下保存,提示要等几分钟,那就等吧(凭感觉就可以重启了) 重启完了过后,进入系统,这时候可能所有网口都不能用了,但不要怕,通过 ip a 查看结果,观察网卡是否有这些数据 <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000,关注到这个 noop,我们可以通过如下的方法启动它,并 DHCP 分配地址,但是重启后又会消失。 ...

IP 命令的使用和解释

Linux Network IP 命令的使用和解释 ip 是网络架构中不可缺少的概念。这里的 ip 指的是 Linux 的命令,查看 man 的结果,ip - show / manipulate routing, network devices, interfaces and tunnels,可见这个命令可以控制路由,网络设备,网卡和隧道。 使用 Usage: ip [ OPTIONS ] OBJECT { COMMAND | help } ip [ -force ] -batch filename where OBJECT := { link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila | vrf | sr } OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } | -4 | -6 | -I | -D | -B | -0 | -l[oops] { maximum-addr-flush-attempts } | -br[ief] | -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] | -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]} 常见对象 object link 网络设备 address ip地址 addrlabel label configuration for protocol address selection route 路由 neigh arp 或者 NDISC 缓存条目管理 ntable 临近网络操作管理 tunnel 基于 IP 的隧道 tuntap TUN/TAP 设备管理 maddress 多播地址 mroute 多播路由缓存条目 mrule 多播路由策略数据库里的规则 monitor 查看 netlink 信息 xfrm IPSec 策略管理 netns 网络命名空间管理 l2tp 基于 IP 的隧道网络 tcp_metrics tcp 指标管理 token 标记的接口认证管理 常见参数 -V, -Version 显示ip命名的版本信息 -h, -human 显示人可以看懂的信息 -s, -stats 输出更多信息 -d, -details 输出更详细的信息 -f, -family 指定协议簇,可选值有 inet, inet6, bridge, ipx, dnet, mpls 或者 link -4, shortcut for -family inet -6, shortcut for -family inet6 -B, shortcut for -family bridge -c, -color 带颜色的输出 -o, -oneline 单行显示 常用命令 ip address [show] 显示 IPv4 或者 IPv6 的地址信息 ip address show up 仅展示打开的网络设备的地址信息 ip address show dev eth0 展示 eth0 设备的地址信息 ip address add 192.168.1.1/24 dev eth1 将 ip 地址赋予 eth1 ip address delete 192.168.1.1/24 dev eth1 删除 ip 地址 ip address flush dev eth4 scope global 删除所有 eth4 的所有全局 IPv4 和 IPv6 的地址 ip a 的解析 ip a 也就是 ip addr,通过它可以查看很多信息。 ...

jenkins 使用

[[Jenkins]] jenkins 使用 安装 记住安装git命令,否则无法连接到 git 仓库。 需要安装make,glibc-static,git,go 连接 参考:https://docs.gitlab.com/13.10/ee/integration/jenkins.html 有两种方式进行连接: Setting –》 Intergrations –》 Jenkins CI Setting –》 Intergrations –》 WebHook 但这两个都出现了一些问题: jenkins CI 在 13.11 版本之前都有bug,无法配置。 WebHook 出现 Invalid Token 问题 Invalid Token:https://github.com/jenkinsci/gitlab-plugin/issues/718

Kaggle 的使用

Linux Kaggle 的使用 下载 先确认是否有 python3 环境。 apt install python3-pip pip install kaggle 注册账号 进入 Kaggle 选择 Register,进行注册确认。 有了账号后,进入 https://www.kaggle.com/<username>/account, 选择 Account,往下找到 API,选择 Create New API Token。会自动下载一个 kaggle.json 文件。 把这个 kaggle.json 上传到需要下载数据的机器的 ~/.kaggle/ 下,保证 ~/.kaggle/kaggle.json 文件存在。 下载数据 根据 Curated Datasets for the Slingshot Competition,也就是认证的可用数据集进行下载,下载的语句大致是: kaggle datasets download -d <owner>/<dataset-name> -p /data/ 例如下载 COVID-19 Open Research Dataset 的数据到 /data 目录下,就可以: kaggle datasets download -d allen-institute-for-ai/CORD-19-research-challenge -p /data

Linux Bond 配置(Ubuntu 18.04)

Linux Network Linux Bond 配置(Ubuntu 18.04) Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。 七种模式 俗称 配置简称 英文名 中文名 解释 bond0 balance-rr Round-robin policy 平衡轮询策略 传输数据包顺序是依次传输,直到最后一个传输完毕,此模式提供负载平衡和容错能力。 bond1 active-backup Active-backup policy 活动备份策略 只有一个设备处于活动状态。一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。此模式提供了容错能力。 bond2 balance-xor XOR policy 平衡策略 传输根据 (源MAC地址 xor 目标MAC地址) mod 设备数量 的布尔值选择传输设备。 此模式提供负载平衡和容错能力。 bond3 broadcast Broadcast policy 广播策略 将所有数据包传输给所有设备。此模式提供了容错能力。 bond4 802.3ad IEEE 802.3ad Dynamic link aggregation IEEE 802.3ad 动态链接聚合 创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持;如果使用交换机,交换机也需启用 802.3ad 模式。 bond5 balance-tlb Adaptive transmit load balancing 适配器传输负载均衡 通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收,如果接受的设 备传不通就用另一个设备接管当前设备正在处理的mac地址。 bond6 balance-alb Adaptive load balancing 适配器负载均衡 包括mode5,由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。 mode0,mode2 和 mode3 理论上需要静态聚合方式 bond1,mode5 和 mode6 不需要交换机端的设置,网卡能自动聚合 bond4 需要支持 802.3ad,配置交换机 目的 整合两个千兆网口,将速率突破 1000 Mb/s。决定使用 bond6 实现。 ...

Linux OOM Killer 机制

Linux Linux OOM Killer 机制 最近在做一项测试,总内存 256 GB,当程序“吃”了 200 G左右内存的时候就突然中止了。通过查找 dmesg | egrep -i -B100 'killed process',发现有个 out of Memory killed 将这个测试程序干掉了,这就是 Linux 的 OOM Killer 机制。 由于 按需分配物理页面,所以程序可以预先获取很多的虚拟内存,当真的有数据需要填充才会分配物理内存;当多个进程真的要用这些内存了,系统发现物理内存不够用了,就启动 OMM killer 机制。这个机制简单的理解就是,内存不够用,找个内存消耗最高的干掉就好了(实际情况比较复杂)。 遇到这种问题,三个思路去处理: 增加物理内存(或虚拟内存) 查看程序是否有内存消耗 bug 系统层面配置 OOM Killer 机制 系统层面配置 OOM Killer 机制 这里又分为两个思路,要么提升 killer 执行时的阈值,要么降低 killer 执行力度。 Overcommit 配置 这里的配置项,控制内存的申请量。 在 Linux 中,可以通过内核参数 vm.overcommit_memory 去控制是否允许 overcommit: 默认值是 0,在这种情况下,只允许轻微的 overcommit,而比较明显的 overcommit 将不被允许。 如果设置为 1,表示总是允许 overcommit。 如果设置为 2,则表示总是禁止 overcommit。也就是说,如果某个申请内存的操作将导致 overcommit,那么这个操作将不会得逞。 那么对内核来说,怎样才算 overcommit 呢?Linux 设定了一个阈值,叫做 CommitLimit,如果所有进程申请的总内存超过了 CommitLimit,那就算是 overcommit 了。在/proc/meminfo中可以看到 CommitLimit 的大小: ...