Linux Command Miscellaneous

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
##注:变量赋值等号不能含空格

$command 3>&1 1>&2 2>&3 交换stdout和 stderr

cat -n file or cat -b file #显示文件文件时候带上行号

cp --backup=t source.file target.file #复制时不覆盖

find -printf "%C@ %p\n"|sort #查找文件并且按照修改时间进行排序

find . -print -exec chmod 777 {} \; #递归修改当前目录所有文件权限为777
$command 3>&1 1>&2 2>&3 交换stdout和 stderr
lshw -C display #获取图形芯片信息

lsusb -d 产品ID -v #查看硬件详细信息
lsusb -s devnum -v

find -type l -xtype d #寻找所有指向目录的软link

find /path/to/dir -type f | grep -o '\.[^./]*$' | sort | uniq #列出目录中所有的扩展名

du -h /path | sort -h #查看所有目录大小

du -d /path #查看path目录的占用空间大小

free -m | awk '/cache:/ { printf("%d%\n",$3/($3+$4)*100)}' 空闲内存百分比

pgrep -f 'process.*argument.*' #根据名称和参数获取进程id

ps -p $$ #显示自己在那个shell上

ps auxf #带父子进程树的ps输出

find . -name 'pattern'| xargs du -hc #特定类型文件的大小总和

find . -mtime +30 -exec mv {} old/ \; #把30天前修改的文件移动到 old 目录

find . -name "*.cpp" |xargs cat|wc -l #当前目录cpp源文件代码行数

find . -name "*.cpp"|xargs cat|grep -v ^$|wc -l #当前目录cpp源文件非空行代码数

find . -type f -name '*.pm' -printf '%6s %p\n' | sort -nr | head -n 50 #列出50个大文件

find -iname \*.pdf -print0 | xargs -0 pdfgrep -i "my search text" #在pdf中查找

pwdx pid #显示进程的工作目录

ps -ef | grep [f]oo | awk '{print $2}' | xargs kill -9 #清理所有叫foo的进程(killall)

du -sm /home/* | sort -n | tail -10 #查找10个home目录大的用户

ls -1 | rename 's/\ /_/' #把文件名中的空格替换成下划线

find / -iname '*.pdf' -print -exec pdftotext '{}' - \; | grep --color -i "unix" # 在pdf中grep

sed '/^ #.*DEBUG.*/ s/^# //' $FILE # 使用 sed 打开关闭注释

pv file1 > file2 #带进度条的复制文件

rename -v 's/ /_/g' * # 替换文件名中的空格为下划线

vim -c new myfile # 用vim同时打开多个文件

rm **/*(-@) # 清理掉无效的符号link

function garg () { tail -n 1 ${HISTFILE} | awk "{ print \$$1 }" } #获取第n个参数

监控

1
2
3
4
5
6
7
8
9
10
11
12
# 监控进程信息并实时输出
top -b -d 1 | sed 's/^/varName schoolId/' | awk '{print $1,$2,$3,$4,$11,$12,systime(),$14}' | grep --line-buffered firefox

tcpdump -w - |pv -bert >/dev/null #查看网络吞吐量

ps axu | grep [a]pache2 #查看进程时候避免自己被grep 到

ifconfig -a| grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' #获取所有mac地址

PID=httpd ; ps aux | grep $PID | grep -v grep | awk '{print $2}' | xargs kill -9 #杀死所有 $PID 的子进程

myLongScript && echo -e '\a' || (echo -e '\a'; sleep 1; echo -e '\a') #长耗时脚本执行完发出声音

awk

1
2
3
4
5
# 转换为合适的md格式
awk -F '|' '{print "|"$2"|" "["$3"]("$5")|"$4"|"}' filename

# 去除md格式中表格内部的空格
awk 'gsub(/^ *| *$/,"")' filename

##关闭地址空间随机化(ASLR)

1
echo 0 > /proc/sys/kernel/randomize_va_space

curl

1
2
curl -I http://localhost #发送HEAD请求
curl url | egrep -o '(http|https)://[a-z0-9]*\.[a-z0-9]*\.[a-z0-9]*'|sort |uniq #网页中提取url

curl–模拟post登陆

1
2
3
ACCOUNT=xxx
PASS=xxx
curl -d "username=$ACCOUNT&password=$PASS" http://p.nju.edu.cn/portal_io/login

Transform

1
2
3
4
5
6
7
8
9
10
11
mmv "*.txt" "#1.md" 批重命名文件夹下的所有文件的拓展名,比如把txt文件重命名为md文件

convert example.png -resize 100x100! output.png 缩放图片

ffmpeg -i initial.mkv -acodec libvorbis -ab 128k -ac 2 -vcodec libx264 -vpre max -crf 22 -threads 0 final.mkv #将mkv文件编码成ogg+h264+mkv格式

ffmpeg -i source.flv -vn acodec copy destination.mp3 #提取声音

mencoder mf://*.jpg -mf fps=50:type=jpg -ovc raw -oac copy -o out50fps.avi #按照字母表顺序将所有jpeg文件合并成一个50帧每秒的视频

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=${out}.pdf ${filename1} ${filename2} ... #合并pdf

解压命令

1
2
3
4
tar jxvf 
tar -xvf
bzip2 -d
解压tar.bz2

机器相关

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo dmidecode -s system-product-name #机器型号 
sudo dmidecode --type=processor | grep -i -A 1 charac #检查cpu是否支持64位指令
pacmd set-sink-volume 0 0x10000 #命令行调节音量
```


## Linux制作启动盘
```sh
磁盘复制 dd if=/dev/sda of=/dev/sdb
刻录光盘 dd if=XXXX.iso of=/dev/sdb
烧录cd cdrecord -v dev=/dev/cdrom yourimage.iso

从磁盘中创建一个CD/DVD的ISO镜像 dd bs=1M if=/dev/scd0 of=./filename.iso OR readom -v dev='D:' f='./filename.iso' speed=2 retries=8

sendmail命令–cmd下发送邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sendemail 	-s ${mail-server}
-f ${my_email}
-t ${dst-email}
-u WTF
-m "Utilize command line tools - [sendemail] to send an e-mail to you."
-xu ${username}
-xp ${password}
-o tls=auto
-a ${attatch-file}
ex:
sendemail -s smtp.nju.edu.cn
-f mg1433094@smail.nju.edu.cn
-t 1826588117@qq.com
-u WTF
-m "Utilize command line tools - [sendemail] to send an e-mail to you."
-xu mg1433094@smail.nju.edu.cn
-xp password
-o tls=auto

MYSQL

1
mysql -u root -p -N -e"show processlist\G;" | egrep "Host\:" | awk -F: '{ print $2 }' | sort | uniq -c   #显示MySQL的链接数
Contents
  1. 1. 常用命令
  2. 2. 监控
  3. 3. awk
  4. 4. curl
  5. 5. curl–模拟post登陆
  6. 6. Transform
    1. 6.1. 解压命令
  7. 7. 机器相关
  8. 8. sendmail命令–cmd下发送邮件
  9. 9. MYSQL