常用的 linux 命令

这篇文章记录自己日常工作中用到的命令实例,作为自己的命令速查手册,将保持不断更新。

bash 命令

alternatives

切换一条命令的不同指向。一开始,服务器上安装了两个 Java 版本,如果想要从一个版本切换到另一个版本,那么使用 alternatives 就可以帮助我们轻易做到切换命令的具体指向,gcc 的切换也类似如此。

# 1. 配置命令:
sudo alternatives --config java

# 2. 添加或者安装命令,最后的 500 是 priority,表示优先级:
sudo alternatives --config test_alter
sudo alternatives --install /usr/bin/java java \
    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/bin/java 500

# 3. 删除命令:
sudo alternatives --remove java /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/

# 直接输入 alternatives 可以查看帮助信息
$ alternatives
alternatives version 1.7.4 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: alternatives --install <link> <name> <path> <priority>
                    [--initscript <service>]
                    [--family <family>]
                    [--slave <link> <name> <path>]*
       alternatives --remove <name> <path>
       alternatives --auto <name>
       alternatives --config <name>
       alternatives --display <name>
       alternatives --set <name> <path>
       alternatives --list

common options: --verbose --test --help --usage --version --keep-missing
                --altdir <directory> --admindir <directory>

curl/wget/aria2

发起 http 请求和下载东西。

# 使用代理
curl -x 127.0.0.1:7890 https://www.google.com

# POST 提交
curl -X POST -d 'name=zzk' http://127.0.0.1:4242/task

# curl 下载文件
curl https://textattack.s3.amazonaws.com/word_embeddings/paragramcf --output paragramcf
curl -O https://textattack.s3.amazonaws.com/word_embeddings/paragramcf

# wget 下载文件
wget https://textattack.s3.amazonaws.com/word_embeddings/paragramcf
wget -O embedding.zip https://textattack.s3.amazonaws.com/word_embeddings/paragramcf

# aria2 下载文件:-c 断点续传、-x 连接数、-o 输出名字
sudo yum install aria2
aria2c -c -x 8 -o embedding.zip https://textattack.s3.amazonaws.com/word_embeddings/paragramcf

# curl 默认会用 http_proxy 环境变量作为代理
export ip='127.0.0.1'
export port='7890'
export HTTP_PROXY="http://$ip:$port"
export http_proxy="http://$ip:$port"
export HTTPS_PROXY=$HTTP_PROXY
export https_proxy=$http_proxy

# git 设置代理
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080
git config --global --list
git config --global --unset http.proxy
git config --global --unset https.proxy

docker

docker 启动参数,用于开发调试,将 docker 视为一个干净的隔离环境,网络、内存、显卡、权限等又不过多限制,生产环境不建议开启。

docker run -it\
           --runtime=nvidia\
           --network=host\
           -v $(pwd):$(pwd)\
           -w $(pwd)\
           --privileged\
           --cap-add sys_ptrace\
           --security-opt seccomp=unconfined\
           --shm-size="16g"\
           busybox sh

-it # 绑定容器,注意只有一个横杆
--rm # 容器退出后删除
--runtime=nvidia # 是否使用显卡
--network=host # 网络模式
-v $(pwd):$(pwd) # 目录映射
-w $(pwd) # 进入后的工作目录
--privileged # 权限级别,用于 profile
--cap-add sys_ptrace # 取消 ptrace 限制
--security-opt seccomp=unconfined # 系统安全选项
--shm-size="16g" # 共享内存,batch size 可以开大一些

screen

开启新窗口,可以用来挂起后台任务,防止当前 terminal 退出之后进程也跟着退出。

# 直接输入 screen 创建新窗口
screen

# -r 选项返回窗口,需要加上一个 id
screen -d

# ctrl-a + ctrl-d:detach,离开窗口
# ctrl-a + [ :光标移动,支持像 vim 一样移动光标

zip/unzip/tar

压缩和解压

# 将 backup 文件夹递归地压缩到 backup.zip 里面,加上 -q 可以隐藏执行过程
zip -r backup.zip backup

# 将压缩包解压到 THUCNews 文件夹
unzip -d THUCNews THUCNews.zip

# tar 解压:-x 解压,-v 执行过程,-f 文件名字,-z 通过 gzip 指令处理,-C 指定文件夹
tar -xvf backup.tar -C backup1

# tgz == tar.gz,tar 和 tgz 不通用,gz 结尾的需要带上 -z 选项
tar -zxvf yelp_review_full_csv.tgz

# tar 压缩:-c 压缩
tar -czvf backup.tgz backup

任务管理

# 挂起到后台执行,nohup 当前终端退出也不会导致程序退出,2>&1 将错误流重定向到标准流
# 最后的 & 表示挂起
nohup ./clash-linux-amd64-v1.10.0 > nohup.out 2>&1 &

# 查看正在执行的任务
ps aux | grep "clash"

编译链接

export C_INCLUDE_PATH=/usr/local/cuda/include/:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=/usr/local/cuda/include/:$CPLUS_INCLUDE_PATH

# cmake 查看预处理文件
make help | grep host_intrinsics
make -j32 cinn/runtime/cpu/host_intrinsics.i

其他相关命令:

file:查看文件信息
objdump:查看二进制
nm:打印符号表
readelf:读取 elf
c++filt: 解析符号
ar:压缩程序,压缩多个 .o 为一个 .a
ldd:列举一个程序需要的动态链接库
ldconfig:配置动态链接库

文字处理相关

# 统计行数
wc -l data/imdb/*.tsv

others

# 设置使用的 GPU
export CUDA_VISIBLE_DEVICES=1
export CUDA_VISIBLE_DEVICES=1,2

# 监视显卡使用情况
watch -n 0.1 -d nvidia-smi

# pip 临时换源
pip install wandb -i https://pypi.tuna.tsinghua.edu.cn/simple

# ubuntu 换源
sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

bash 编程

for 循环语句

fruits="apple banana orange"
for fruit in $fruits
do
    echo $fruit
done
posted @ 2022-12-19 08:57  楷哥  阅读(118)  评论(0编辑  收藏  举报