开一个坑整理linux的奇妙命令

kill -s 9 $pid  # 强行停止
ps -aux #显示所有进程
watch -n 0.1 [exec] #间隔0.1s运行exec显示输出
chmod -R #对所有子文件夹chmod
nohup [command] & #将指令放在后台运行
~/.bash_history #bash历史,向下为更新
file [file] #查看文件信息
ln -s $SOURCE_DIR $TAR_DIR #创建软链接
pstree [username] #查看进程树
sudo netstat -tulpn #查看开放端口(t:tcp,u:udp,l:listening socket,p:pid and name, n:numerical address)
ls -d .v* #所有符合表达式的文件
ls -d .v*/ #所有符合表达式的目录
ls -Sl #按文件大小排序
[exec] >> [file] #追加输出
[exec] > /dev/null #抛弃输出
find [path] -name "*.c" #按文件名查找目录
find [path] -name "*.c" -exec grep  "str" {} + #查找目录下指定文件名的文件中包含的字符串str
env #查看目前环境变量
sudo systemctl start [service] #启动服务
readlink [file] #读取符号链接file的指向,-f 递归查找直到实际文件
dmesg #查看ring message 信息,包含开机信息及异常信息
nl [file] #将文件每行前添加行号,并输出
apropos [func] #查找man page
lsof [file] #查看打开文件的进程
lsof -t [file] | xargs kill -9 #kill所有打开文件file的进程
wall "[message]" #向所有用户终端发送信息 message
wget -e "https_proxy=127.0.0.1:10987" [url] #wget使用代理
$LD_LIBRARY_PATH #动态链接库.so搜索路径
ldd [a.so] #查看动态链接库链接信息
-L$PATH -I$PATH #编译时指定额外lib和include路径
[command] 2> [file] #重定向错误输出流
[command] | tee [file] #输出到屏幕,同时追加到 file
[command] 2>&1 #错误流合并到输出流
c++filt [_ZN4llvm3sys22getDefaultTargetTripleEv] #找到一段name mingling对应的函数名
gdb -c [core dump] [exec] #gdb调试core dump的文件
nm {--demangle} [sample.o] #列出object file中的symbol (T: 强符号, W: 弱符号)
strings [exec] #列出elf中可见字符串
ltrace [./exec] #输出library函数调用
strace [./exec] #输出system函数调用
strace [./exec] | grep /lib #查看共享库调用
grep -A [n] "str" [file] #在file中查找"str",并输出每次出现后四行
#grep -v : 反向搜索, -r : 递归搜索, -E : 支持扩展表达式(允许 |, [], + 等)
grep -r [str] [dir] #递归搜索 dir 中所有包含 str 内容的文件
grep -nr [str] [dir] #递归搜索 dir 中所有包含 str 内容的文件,并显示行号
unset HOME #删除环境变量
readelf -h [file] | grep Machine #查看elf架构 

硬件相关

df -hT #所有硬盘使用情况 T:查看分区格式
fdisk -l #查看硬盘分区
du -h --max-depth=1 #当前目录空间情况
mkfs -t [type(xfs ext2...)] [disk(/dev/sdb1...)] #格式化磁盘disk至type
free -mh #查看内存信息
lspci -v -s [device id] #查看设备详细信息
lscpu #查看cpu信息
#NUMA : Non Uniform Memory Access 
numactl -H #查看CPU内存
numactl -m 1 [application] #bind memory到numa node1
/sys/devices/system/cpu #CPU详细信息
blkid #查看设备UUID
free #查看内存占用
stat [file] #查看文件详细信息
nvidia-smi topo -m # 查看 GPU 之间连接以及 cpu 亲和性
taskset -c 1 ./temp # 绑核1运行
sudo lshw -class display # 查看所有显卡信息
#lshw 是个神奇命令,可以看很多硬件信息
lstopo #查看内存缓存架构和PCIe拓扑,来自hwloc

系统相关

who am i #查看当前所处终端
ulimit -s #查看系统栈限制
ulimit -c [unlimited] #设置内核转储文件限制
ulimit -a #查看所有限制
pstree [user] -a # 查看用户 user 所有进程以及命令

/proc/sys/kernel/printk 设置输出参数的优先级

hpc相关

clush #批量操作集群
clush -w node01,node02,node03 [command]
clush -w node[01-10] [command]

编辑 /etc/clustershell/groups 创建 clush 分组 :

compute: node[01-10]

使用分组:

clush -w @compute [command]

vim

colors evening #更换主题
$ #句尾
^ #句首
H #当前页面首部
L #当前页面尾部
gg #文首
G #文末
:vsp xx.cpp #竖向分栏
:vertical res 20 #调整竖向分栏高度
:sp xx.cpp #水平分栏
:res 20 #调整水平分栏高度
<ctrl + w> + <up/down/left/right> #切换分栏
<ctrl + w> + c #关闭分栏

:set paste #粘贴模式(无自动换行)
:set nopaste #关闭粘贴模式
:set expandtab #tab使用空格
:set tabstop=4 #tab大小为4
:!<command> #执行命令
20 [enter] | [enter] 跳转至指定列
:command 查看所有指令
:verb command [command] 搜索command
查找替换:

:{作用范围}s/{目标}/{替换}/{替换标志}
作用范围:%全文 ,5,125到12行
替换标志:g全部替换, ``

shell

执行一个.sh时会在一个新的shell中执行,执行结束后关闭新shell
export命令修改当前shell参数
~/.bashrc中脚本在启动每一个bash时运行
echo 打印

export PATH=/usr/local/cuda-8.0/bin:$PATH  #加入PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH #加入动态链接
source xx.sh #在当前shell中执行
export #不带参数export显示所有变量
env #查看环境变量和 shell 函数
find $DIR -name "name" #在目录$DIR下查找名字为name的文件/文件夹,"name"可为reg
locate {-r} [name] #在数据库中查找带有name的文件,-r:使用正则
lsb_release -a #查看系统版本
uname -a  #查看系统版本
cat /etc/issue #查看系统版本
 cat /etc/redhat-release #红帽系列系统版本

./configure --prefix=$HOME/local #更改程序安装位置
which gcc #查看程序安装位置
cut -c8- #保留每行从第8个字符开始部分

lspci 查看PCI bus上的devices

slurm

sinfo #状态信息
squeue #任务队列
srun -n 1 <executable> #执行程序(使用1个进程)

pip

pip install --user 为当前user install
pip install --upgrade 升级包

cmake

-D<option>=true 增加参数

c++

g++ [01.cpp] -S 生成.s汇编代码

gdb

info reg 寄存器信息
b [函数名] 函数处断点
p/[格式] <variable>:
x:16进制 d:十进制 u:无符十进制 o:八进制
t:二进制 a:地址 c:字符 f:浮点小数 s:字符串
c [次数] 遇到指定次断点后暂停
command [breakpoint id] 添加当执行到断点时执行的命令 (添加silent不会显示在断点的暂停信息)

break foo if x>0
commands
    silent
    printf "x is %d\n", x
    cont
end

info b 查看断点信息
定义变量:set $i=0
help [command] 显示帮助
i r eip ebp 显示寄存器eip ebp
fr [id] (frame)将状态转移到第id帧
info fr [id] 更详细帧id内容

ps -C [exec] -o pid h 查看应用进程pid
gdb pw.x -p [pid] 调试指定进程

spack && 包管理

spack 使用时应保证环境干净,特别是 $PATH
spack load /[hash] 以hash加载
module avail 已经安装的module
spack find 查看所有已安装的包
spack find --loaded 查看已经加载的包
spack find -ldv [package] 查看已安装的 [package] 包
spack find -l 显示 hash, -f显示compiler flag,-d 显示 dependency, -p 显示安装路径
spack spec [package] 查看包编译选项
spack info [package] 查看包所有版本及选项等
spack compilers 查看spack所有可用编译器
spack edit [package] 编辑包命令,可以查看所有版本
spack install -v cuda@10.1.243 安装指定版本包
spack list [str] 显示所有包括 str 的 package
spack install [package]@[version]~[disable options]+[enable options] ^[dependcies]/[hash] %[compiler] cflags=[], 支持 cppflags, cflags, cxxflags, fflags, ldflags, ldlibs 等参数
spack versions [package] 查看包的所有版本
spack graph --dot [package] | dot -Tpng > [file.png] 生成 package 的依赖图,输出到 file.png
spack config edit compilers 编辑 config

apt-cache show [package] 查看 apt 包详细信息

module

module avail [package_name] 查看已有 module
module show [package_name] 查看包执行的操作

shell

num=10 #变量
`seq $num` #1,2,...num数列
for i in `seq $num`; do <...>; done

标签: none

添加新评论