Linux&DevOps
常用命令
小工具
功能 | 命令 | 备注 |
---|---|---|
Hash | sha256sum / md5sum / | |
Grep | grep / egrep / zgrep / | pgrep -U hjiahu -f xxx |
Cat | zcat | |
CSV | column -s, -t hooke.csv |
CSV 文件示例 |
Disk | sudo parted -l / lsblk / |
1. sudo mount /dev/sdb1 ~/path/ -o umask=000 2. umount ~/HDisk2T/data2 3. apt-get install ntfs-3g / ntfsfix /dev/sda1 NTFS 修复4. smartctl -H /dev/sda 检查磁盘健康状态5. 测试速度: sudo hdparm -Tt /dev/sda |
Wget | wget / | wget -r -m -p -np -k https://xxx |
压缩 | 7z / | 1. sudo apt-get install p7zip-full 2. 7z x PACKAGE.7z 3. 7z 加密压缩: 7z -p a 2022.7z AppleData |
权限 | 授权问题:xhost + / doas / |
1. /etc/doas.conf 2. permit nopass hjiahu as root cmd updatedb |
MacOS 备忘
功能 | 方式 |
---|---|
调出输入法特殊符号面板 | ctrl+cmd+space |
调出强制退出面板 | opt+cmd+esc |
复制文件绝对路径 | opt+cmd+c |
HTTP VPN | 参考 / WIFI->︖->VPN / |
系统配置
.bashrc
PROMPT_DIRTRIM=1 # 在 .bashrc 中添加如下内容,缩短终端提示长度
alias ssh_vim_Y7000='ssh -t xxx@xxx.xyz -P12345 vim '
alias git_clean='git clean -xdf && git submodule deinit --force .'
alias git_update='git submodule init && git submodule update'
alias git_reinit='git_clean && git_update'
alias tags_update="find -E . \
-iregex '.*\.(H|HH|HPP|HXX|H\+\+|INC|DEF|C|CC|CPP|CXX|PY|V|LIB|LEF)$' \
-type f > global_file_list.bak && gtags -f global_file_list.bak -i && \
ctags -R --languages=C,C++,Python,Verilog"
alias tmux="tmux -2"
# xxman_vim cmd_name
xxman_vim() {
man -M /path/to/software/manpage/dir $1 | col -bx | vim -
}
Ubuntu 自启脚本
-
vim /lib/systemd/system/rc-local.service
,添加如下内容到文件末尾[Install] WantedBy=multi-user.target Alias=rc-local.service
-
ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/
-
vim /etc/rc.local
,新增如下内容,需要开机自动执行的命令追加到文件尾部 exit 0 命令前即可#!/bin/sh -e echo "看到这行字,说明添加自启动脚本成功。" > /usr/local/test.log nohup /home/hjiahu/app/frp/frp_0.34.0_linux_amd64/frps -c \ /home/hjiahu/app/frp/frp_0.34.0_linux_amd64/frps_full.ini \ >/dev/null 2>&1 & su other_user -c 'nohup /home/hjiahu/anaconda3/bin/jupyter \ notebook >>/usr/local/test.log 2>&1 &' exit 0
-
给 rc.local 添加权限
sudo chmod +x /etc/rc.local sudo systemctl enable rc-local
-
启动服务并检查状态
sudo systemctl start rc-local.service sudo systemctl status rc-local.service
-
重启失败时需要仔细看下失败提示,一般有解决办法
禁止自动休眠
查看休眠策略:systemctl status sleep.target suspend.target hibernate.target
禁止自动休眠:systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
自动挂载磁盘
- 格式化磁盘为 ext4 格式
- 查看磁盘:fdisk -l 。Disk /dev/sda: 3.64TiB…
- 自动挂载
- 创建挂载点:mkdir /data4t
- 修改 fstab,vim /etc/fstab,追加如下内容:
/dev/sda /data4t ext4 defaults 0 0
常用工具
- 常见的虚拟化工具有微软的 Hyper-V、VMWare 的 ESXi 和开源的 KVM。硬件虚拟化工具相比于 VMware Workstation 可以更好的利用硬件资源
- vnstat,流量监控工具(vnstat -d,可以看最近几天的流量使用)
- wondershaper,网速限制工具,参考
Py 流量监控与限制
import datetime
import json
import commands
# vnstat 2.6 and wondershaper must installed
# crontab -e
# */1 * * * * python /home/hjiahu/tmp/net_monitor.py
valid_itf_id = "eth0"
daily_max_traffic = 1.0 # GB
cmd_traffic = 'vnstat --json d 1'
vnstat_res = commands.getoutput(cmd_traffic)
net_info_jsn = json.loads(vnstat_res)
valid_itf = None
for interface in net_info_jsn["interfaces"]:
if interface["name"] == valid_itf_id:
valid_itf = interface
log = open("/tmp/net_monitor.log", "a")
time_str = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
if valid_itf != None:
day_traffic_tx_gb = valid_itf["traffic"]["day"][0]["tx"]/(1024.0*1024*1024.0)
tmp = ""
if day_traffic_tx_gb > daily_max_traffic:
limit_cmd = "/sbin/wondershaper " + valid_itf_id + " 480 480" # tx/rx 60KB/s
tmp = commands.getoutput(limit_cmd)
if len(tmp) == 0:
tmp = limit_cmd
else :
clear_cmd = "/sbin/wondershaper clear " + valid_itf_id
tmp = commands.getoutput(clear_cmd)
res = str(day_traffic_tx_gb) + "|" + tmp + "\n"
log.write(time_str + "|" + res)
else :
log.write(time_str + "|no such interface: " + valid_itf_id + "\n")
log.close()
问题与解决办法
VPS 无法访问
阿里云 ECS 无法 PING 通,使用官网提供的 vnc 方式登陆后执行 ifconfig,找不到 eth0 ,手动启动 eth0。因为 ECS 上的 VNC 输入一些字符会有问题,所以需要使用页面上的小工具转发字符串到终端
sudo ifconfig eth0 up
sudo dhclient eth0
Pip install 下载慢
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set install.trusted-host mirrors.aliyun.com
WSL2 磁盘
wmic diskdrive list brief # windows 下罗列所有磁盘
wsl --mount \\.\PHYSICALDRIVE1 --partition 1 # 挂载磁盘
cd /mnt/wsl/PHYSICALDRIVE1
autotools
工具安装:
sudo apt-get install autoconf
sudo apt-get install pkg-config
configure --prefix=install path
设置额外的 lib 路径:
vim ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/
srouce ~/.bashrc
echo $LD_LIBRARY_PATH