[TOC]
ref: 常用工作命令-shixx
快捷键
1 2 3 4 5
| 打开一个terminal ctrl+alt+t
在terminal中打开多个标签 ctrl+shift+t
|
apt
1 2
| # apt 命令打印软件包下载地址 -o Debug::Acquire::http=true apt-get -o Debug::Acquire::http=true install nginx
|
进程相关
ps (kill)
1 2
| ps -ef | grep train.py | grep lianzha | grep -v grep | awk '{print "kill -9 "$2}' | sh ps -ef | grep torch | grep -v grep | awk '{print "kill -9 "$2}' | sh
|
watch
1 2 3
| watch -n 0.5 nvidia-smi
nvidia-smi -l 0.3
|
网络端口
netstat
netstat 查看端口占用语法格式:
1 2 3 4 5 6 7
| netstat -tunlp | grep 端口号
-t (tcp) 仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化为数字 -l 仅列出在Listen(监听)的服务状态 -p 显示建立相关链接的程序名
|
shell
1 2 3 4 5 6
| -eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if [ "$a" -ne "$b" ] -gt 大于,如:if [ "$a" -gt "$b" ] -ge 大于等于,如:if [ "$a" -ge "$b" ] -lt 小于,如:if [ "$a" -lt "$b" ] -le 小于等于,如:if [ "$a" -le "$b" ]
|
1 2 3 4 5 6
| if 判断式 if [ 条件判断一 ] && (||) [ 条件判断二 ]; then elif [ 条件判断三 ] && (||) [ 条件判断四 ]; then else 执行第三段內容程式 fi
|
find del
1 2 3 4 5 6 7 8 9 10 11
| rm log/*
find . -name '*' | xargs rm
find /Volumes/WD/data/data/sg3d/server -type d |grep .svn | xargs rm -rf
find . -name '*.exe' -type f -print -exec rm -rf {} \;
find -mtime +1 -exec rm -rf {} \;
|
find del loop(每隔24小时,删除(最近改动日期超过10天的)文件)
1 2 3 4 5 6 7
| echo "init---auto loop-" echo time
while true; do find -name '*.log' -mtime +10 -exec rm {} \; sleep 24h done
|
大文件查找
1 2 3 4 5 6 7 8 9
| find / -type f -printf "%s\t%p\n" | sort -n | tail -1
find / -size +100M -ls
find / -size +100M -size -200M -ls
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
|
shell echo date
在crontab 定时事件中, 执行过的脚本记录事件
在sh 文件中
1 2 3 4
| echo $(date) echo $(date "+%Y-%m-%d %H:%M:%S")
即可输出执行的事件, 同时记录到log中
|
执行结果
1
| Sat Jun 23 15:41:31 CST 2018
|
1 2
| # 赋值 cur_dateTime="`date +%Y-%m-%d,%H:%m:%s`"
|
shell 中的sleep命令
在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小时)
sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时
shell 参数传递
1 2 3 4 5 6 7 8 9
| #!/bin/bash
echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3";
|
1 2 3 4 5 6
| $ ./test.sh 1 2 3 Shell 传递参数实例! 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3
|
awk
1
| $echo "123456789" | awk '{print substr($0, 5, 2)}'
|
sed
1 2 3 4
| sed -n '100,200p' filename
“;” --> "\n" sed -i "s/;/\\n/g" test.txt
|
rename
1 2 3 4 5 6 7 8 9 10 11
| # Perl 版本 Ubuntu()
$ rename -v "s/txt/log/g" 1.txt 2.txt 1.txt renamed as 1.log 2.txt renamed as 2.log
rename "s//.html//.php/" * # 把.html 后缀的改成 .php后缀 rename "s/$//.txt/" * # 把所有的文件名都以txt结尾 rename "s//.txt//" * # 把所有以.txt结尾的文件名的.txt删掉 rename 's/^/googluck/' * #统一在所有文件名前添加某个字符串 rename -v "s/amsr-vector-fs-/01_amsr-vector-fs-/" amsr-vector-fs-*
|
tail
head
history
https://www.baeldung.com/linux/delete-commands-history
压缩工具
tar
1 2 3 4 5
| tar -cvf ***.tar Floder tar -xvf ***.tar
tar -czvf my_folder.tar.gz my_folder tar -xzcf my_folder.tar.gz
|
zip/unzip
1 2
| zip -q -r mcw.zip /root/mcw_test
|
1 2 3 4
| unzip test.zip unzip -n test.zip -d /tmp unzip -v test.zip unzip -o test.zip -d tmp/
|
zip 分券解压
1 2 3 4 5 6 7 8 9 10 11 12 13
| #先压缩成完整zip: zip -r a.zip ./somethings ; #再分割成分卷: zip -s 4g a.zip --out b.zip ,单位可以是m、g、t等 -----------------------------
# 1 分卷合并成完整zip(三个方法) 1.1 cat archivename.z* > archivename.zip 1.2 zip -F b.zip --out a.zip 2.3 zip -s 0 b.zip --out a.zip
# 2 (-q 不显示任何信息) unzip -q archivename.zip -d ./dir
|
screen
1 2 3 4 5 6
| screen -S XX screen -ls screen -r XX screen -d xx
screen -X -S sxx quit
|
1
| conda config --set auto_activate_base false
|
lsof
lsof
命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP
)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof
命令需要访问核心内存和各种文件,所以需要root用户
执行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| lsof (选项)
lsof -i:端口号
选项: -a:列出打开文件存在的进程; -c<进程名>:列出指定进程所打开的文件; -g:列出GID号进程详情; -d<文件号>:列出占用该文件号的进程; +d<目录>:列出目录下被打开的文件; +D<目录>:递归列出目录下被打开的文件; -n<目录>:列出使用NFS的文件; -i<条件>:列出符合条件的进程(协议、:端口、 @ip ) -p<进程号>:列出指定进程号所打开的文件; -u:列出UID号进程详情; -h:显示帮助信息; -v:显示版本信息
|
lsof输出各列信息的意义如下:
- COMMAND:进程的名称
- PID:进程标识符
- PPID:父进程标识符(需要指定-R参数)
- USER:进程所有者
- PGID:进程所属组
- FD:文件描述符,应用程序通过文件描述符识别该文件。
- TYPE: [DIR, REG, unknown,]
获取端口对应的进程ID=>pid
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| lsof abc.txt 显示开启文件abc.txt的进程 lsof -c abc 显示abc进程现在打开的文件 lsof -c -p 1234 列出进程号为1234的进程所打开的文件 lsof -g gid 显示归属gid的进程情况 lsof +d /usr/local/ 显示目录下被进程开启的文件 lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长 lsof -d 4 显示使用fd为4的进程 lsof -i 用以显示符合条件的进程情况 lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 46 --> IPv4 or IPv6 protocol --> TCP or UDP hostname --> Internet host name hostaddr --> IPv4地址 service --> /etc/service中的 service name (可以不止一个) port --> 端口号 (可以不止一个)
|
硬件相关
存储
1 2 3
| lsblk # 磁盘分区查看(tree) fdisk -l # 更详细的磁盘分区 df -h # 各个磁盘的空间
|
cpu
1 2 3 4 5 6 7 8
| lscpu #Architecture: x86_64 #CPU op-mode(s): 32-bit, 64-bit #Byte Order: Little Endian #Address sizes: 36 bits physical, 48 bits virtual #CPU(s): 4
# Model name: Intel(R) Celeron(R) CPU J1900 @ 1.99GHz
|
显卡
网卡
1 2 3 4 5 6
| lspci | grep -i eth
ifconfig
ip link show
|
端口占用
1 2 3 4 5 6 7 8
| # 使用netstat命令: netstat -tuln | grep <端口号>
# 使用lsof命令: lsof -i :<端口号>
# 使用ss命令: ss -tuln | grep <端口号>
|
USB
User管理
1 2
| # sudo usermod -aG groupname username
|
内存
1 2 3
| dmidecode -t memory dmidecode -t 17 # Physical Memory Array
|
服务管理
redis-server (自启动关闭)
1 2 3 4 5 6 7 8 9 10
| root@ubuntu8:~# systemctl is-enabled redis-server enabled root@ubuntu8:~# root@ubuntu8:~# systemctl disable redis-server Synchronizing state of redis-server.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install disable redis-server Removed /etc/systemd/system/redis.service. root@ubuntu8:~# root@ubuntu8:~# systemctl stop redis-server
|