一、killall -0 和 kill -0的区别
1、kill [信号代码] 进程ID
注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止。
# kill -9 22761
2、与kill命令不同的是,killall 命令可以根据进程名称来杀死进程。kill 命令 则先需要找到进程的id。
#yum install -y psmisc(安装killall)
# pgrep -l magic_Linux
2 13020 magic_Linux01
3 22761 magic_Linux02
4 25279 magic_Linux03
5 27694 magic_Linux04
# killall magic_Linux02
二、ssh实现端口转发
将发往本机(192.168.1.15)的9200端口访问转发到192.168.1.19的9200端口
#ssh -p 22 -C -f -N -g -L 9200:192.168.1.19:9200 ihavecar@192.168.1.19
记住:前提是先进行秘钥传输。
命令执行完后,访问192.168.1.15:9200端口则真实是访问192.168.1.19:9200端口。
三、查找80端口请求数最高的前20个IP
有时候业务的请求量突然上去了,那么这个时候我们可以查看下请求来源IP情况,如果是集中在少数IP上的,那么可能是存在攻击行为,我们使用防火墙就可以进行封禁。命令如下:
# netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
四、查看tcp连接状态
指定查看80端口的tcp连接状态,有利于分析连接是否释放,或者攻击时进行状态分析。
# netstat -ant | awk '{print $6}'|sort | uniq -c|sort -rn
五、找出当前系统CPU使用量较高的进程
在很多运维的时候,我们发现CPU耗用较为严重,那么怎么样才能找出CPU消耗的进程排序呢?
# ps -aux | sort -rnk 3 | head -20 (3 换 4,为内存)
六、windos没有改hosts没有权限
复制文件到桌面改完,再粘贴回去
七、xshell技巧
1、alt+shift+n 新建窗口
2、设置鼠标左键选中,邮件粘贴
3、新建窗口“+”消失快捷键恢复:
Ctrl+Shif+T
八、paste拼接命令
paste -d -s -file1 file2
选项的含义如下:
-d 指定不同于空格分隔符,如果不指定,默认用空格分割
-s 将每个文件合并成行而不是按行粘贴。
- 使用标准输入。例如ls -l | paste ,意即只在一列上显示输出
-s用法
# cat per1
ID897
ID666
ID982
# cat per2
P.Jones
S.Round
L.Clip
# paste per1 per2
ID897 P.Jones
ID666 S.Round
ID982 L.Clip
# paste -s per1 per2
ID897 ID666 ID982
P.Jones S.Round L.Clip
-d案例
paste file1.txt file2.txt
12345 6789
paste -d "+" file1.txt file2.txt
12345+6789
paste -d "" file1.txt file2.txt
123456789
交叉合并
$ cat 123.txt
aa
bb
cc
dd
$ cat 456.txt
11
22
33
$ paste 123.txt 456.txt |tr "\t" "\n"
aa
11
bb
22
cc
33
dd
九、sort常用选项
-t,指定排序时所用的分隔符;-k,指定比较的列数,常与-t参数结合使用
sort -nt ":" -k 2 file1
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
-r 以倒序(相反的顺序)输出排序结果
-u --unique,去掉重复的行输出排序结果,功能类似于uniq功能
-f 将小写字母当作大写字母对内容进行排序
-n 用于对数值的大小进行排序
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件
十、comm对比命令
comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容
comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分
十 一、nl命令 输出的文件内容自动的加上行号!
# nl file1.txt
1 12345
2 dfnj k
3 sdn
4 sdklnf `:wq
5 `
cat -n也能实现加行号,但是nl更专业,支持做比较多的显示设计。
#cat -n file1.txt
1 12345
2 dfnj k
3 sdn
4 sdklnf `:wq
5 `
十二、混合
1、删除0字节文件
find -type f -size 0 -exec rm -rf {} \;
2、查看进程按内存从大到小排列
PS -e -o "%C : %p : %z : %a"|sort -k5 -nr
3、按 CPU 利用率从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -nr
4、打印 cache 里的URL
grep -r -a jpg /data/cache/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}'
5、查看 http 的并发请求数及其 TCP 连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
6、杀死mysql进程
ps aux |grep mysql |grep -v grep |awk '{print $2}' |xargs kill -9 (从中了解到awk的用途)
killall -TERM mysqld
kill -9 `cat /usr/local/apache2/logs/httpd.pid` 试试查杀进程PID
7、显示运行 3 级别开启的服务:
ls /etc/rc3.d/S* |cut -c 15- (从中了解到cut的用途,截取数据)
8、如何在编写 SHELL 显示多个信息,用 EOF
cat << EOF
+--------------------------------------------------------------+
| === Welcome to Tunoff services === |
+--------------------------------------------------------------+
EOF
9、for 的巧用(如给 MySQL 建软链接)
cd /usr/local/mysql/bin
for i in *
do ln /usr/local/mysql/bin/$i /usr/bin/$i
done
10、查看80端口建立连接
netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort
11、查看 Apache 的并发请求数及其 TCP 连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
12、因为同事要统计一下服务器下面所有的 jpg 的文件的大小,写了个 SHELL 给他来统计。原来用 xargs 实现,但他一次处理一部分。搞的有多个总和……,下面的命令就能解决。
find / -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
CPU 的数量(多核算多个CPU,cat /proc/cpuinfo |grep -c processor
)越多,系统负载越低,每秒能处理的请求数也越多。
13、 CPU负载
mpstat 1 1
检查 %idle 是否过低(比如小于5%)。
14、网络负载
sar -n DEV
检查网络流量(rxbyt/s, txbyt/s)是否过高
15、网络错误
netstat -i
检查是否有网络错误(drop fifo colls carrier),也可以用命令:# cat /proc/net/dev
16、网络连接数目
netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n
17、进程
top -id 1
18、杀掉80端口相关的进程
lsof -i :80|grep -v “ID”|awk ‘{print “kill -9”,$2}’|sh
19、清除僵死进程
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
20、tcpdump 抓包,用来防止80端口被人攻击时可以分析数据
tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts
21、然后检查IP的重复数并从小到大排序 注意 “-t\ +0” 中间是两个空格
# less pkts | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"\n"'} | sort -n -t\ +0
22、查看系统自启动的服务
chkconfig --list | awk '{if ($5=="3:on") print $1}'
23、kudzu 查看网卡型号
kudzu --probe --class=network
常用正则表达式
1.匹配中文字符的正则表达式: [\u4e00-\u9fa5]
2.匹配双字节字符(包括汉字在内):[^\x00-\xff]
3.匹配空白行的正则表达式:\n\s*\r
4.匹配 HTML 标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
5.匹配首尾空白字符的正则表达式:^\s*|\s*$
7.匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
8.匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
9.匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
13.匹配ip地址:\d+\.\d+\.\d+\.\d+
14.匹配特定数字:
^[1-9]\d*$ //匹配正整数
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)
15.匹配特定符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
16、层级关系
# find . *
# tree
17、windows和mac互传文件(前提是两者有网线互通)
mac
python3 -m http.server
window
装一个fileserver
fileserver.exe -port 端口 -path 路径
18、sudo -i 和 su - root
su是superuser的前面两字母。
su root=su
su root和su一样:表示与root建立一个链接,通过root执行命令,其实就是进程的有效用户ID变成了root,unix校验进程的权限都是校验的有效用户ID,进程的实际用户ID还是当前登录系统的用户,主目录也还是当前登录系统的用户的主目录。
su - root需要密码
sudo -i 不需要密码
sudo -i表示以root身份登录,进程的实际用户ID和有效用户ID都变成了root,主目录也切换为root的主目录。
19、windos阻止广告弹窗
打开网络---->internet属性---->隐私------>启用弹出窗口阻止程序------>阻止级别设置为高
20、linux终端中启动 Visual Studio Code
# code .
21、ncdu
一个可以替代du命令的工具,ncdu命令是对传统du命令功能上的增强,不需要像du那样输入大量的命令,就可以计算文件及目录大小并可以按照大小或文件名进行排序。它是基于ncurses库开发的,因此还支持很多丰富的交互式命令。
Ncdu还提供了许多操作文件和文件夹的选项-导航,排序甚至删除:
上键或k : 用于向上移动光标
下键或j : 用于向下移动光标
右键或l : 打开所选目录
< 或者 h : 这将打开父目录
n - 按名称排序(再次按降序排列)
s - 按文件大小排序(再次按降序排列)
d - 删除所选文件或目录
g - 显示百分比和/或图表
t - 排序时在文件之前切换dirs
c - 切换子项目计数的显示
b - 当前目录中的Spawn shell
i - 显示有关所选项目的信息
r - 刷新/重新计算当前目录
q - 退出ncdu
22、格式化输出:column
cat dd.txt | column -t
column -s 选项指定分隔符来分割(同时去掉分隔符)
# cat testcolumn
Jackie | 18 | male
Helen | 20 | female
Daniel Liu | 23 | male
# cat testcolumn | column -s '|' -t
Jackie 18 male
Helen 20 female
Daniel Liu 23 male
pr命令:可以将大文件分割成多个页面进行打印,并在每个页面上加上标题
-# 输出指定的列数。-t 忽略页眉和页脚-T 忽略页眉和页脚,去除所有分页记号
# find /usr/bin/ -executable -type f | pr -T -4 | column -t
/usr/bin/cp /usr/bin/nl /usr/bin/chcon /usr/bin/which
/usr/bin/gzip /usr/bin/tzselect /usr/bin/sleep /usr/bin/diff3
/usr/bin/alias /usr/bin/nohup /usr/bin/chgrp /usr/bin/hostname
23、查看各文件夹大小
du -h --max-depth=1|sort -nr
$ ls -lSh (-r 逆序排)
总用量 279M
-rwxr-xr-x 1 op_admin op_admin 181M 2月 8 12:35 jdk-8u151-linux-x64.tar.gz
-rw-r--r-- 1 op_admin op_admin 76M 2月 8 12:22 nacos-server-2.0.0-BETA.tar.gz
-rwxr-xr-x 1 op_admin op_admin 13M 1月 18 10:39 ~
-rw-rw-r-- 1 op_admin op_admin 9.9M 3月 30 2016 cfssl_linux-amd64
drwxr-xr-x 13 op_admin op_admin 282 2月 4 19:00 seaweedfs
drwxr-xr-x. 11 op_admin op_admin 203 1月 15 16:51 workspace
-rw-rw-r-- 1 op_admin op_admin 149 12月 4 14:22 ts.sh
24、通过内存使用率分类进程
ps aux | sort -rnk 4
25、自动回答任何命令yes or no
yes | apt-get update。