Linux&DevOps

2024-03-17
3 min read

常用命令

小工具

功能 命令 备注
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 自启脚本

  1. vim /lib/systemd/system/rc-local.service ,添加如下内容到文件末尾

    [Install]  
    WantedBy=multi-user.target  
    Alias=rc-local.service
    
  2. ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/

  3. 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
    
  4. 给 rc.local 添加权限

    sudo chmod +x /etc/rc.local
    sudo systemctl enable rc-local
    
  5. 启动服务并检查状态

    sudo systemctl start rc-local.service
    sudo systemctl status rc-local.service
    
  6. 重启失败时需要仔细看下失败提示,一般有解决办法

禁止自动休眠

查看休眠策略:systemctl status sleep.target suspend.target hibernate.target

禁止自动休眠:systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

自动挂载磁盘

  1. 格式化磁盘为 ext4 格式
  2. 查看磁盘:fdisk -l 。Disk /dev/sda: 3.64TiB…
  3. 自动挂载
    1. 创建挂载点:mkdir /data4t
    2. 修改 fstab,vim /etc/fstab,追加如下内容:/dev/sda /data4t ext4 defaults 0 0

常用工具

  1. 常见的虚拟化工具有微软的 Hyper-V、VMWare 的 ESXi 和开源的 KVM。硬件虚拟化工具相比于 VMware Workstation 可以更好的利用硬件资源
  2. vnstat,流量监控工具(vnstat -d,可以看最近几天的流量使用)
  3. 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