命令行常用的快捷键:
ctrl + c 中断当前命令执行
ctrl + w 往回删除一个单词,光标放在最末尾
ctrl + u 删除光标以前的字符
ctrl + k 删除光标以后的字符
ctrl + a 移动光标至的字符头
ctrl + e 移动光标至的字符尾
ctrl + l 清屏
rename 重命名
rename -n 's/abc/def/' * //针对当前文件夹下的所有文件 把abc 替换为def -n并不执行
rename 's/abc/def/' * //针对当前文件夹下的所有文件 把abc 替换为def
rename 's/abc/def/g' * //针对当前文件夹下的所有文件 把所有abc 替换为def
支持通配符
? 可替代单个字符
* 可替代多个字符
例子 文件夹中有这些文件foo1, ..., foo9, foo10, ...foo111
rename foo foo0 foo? // foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0
rename 's/^(//' *.png。 //将左括号"("去掉
rename 's/.jpg$/.png/' *.jpg //将后缀名.jpg改成.png
批量去掉隐藏文件名的第一个点.
ls -adl .* | awk '{print $NF}' | sed 's/^.//g' | xargs -i'{}' mv .{} {} //把所有隐藏的文件显示出来
ls -adl .* //列出.* 模式的普通文件 不包括 . ..文件夹
awk '{print $NF}' //列出最后一列
sed 's/^.//g' //替换以.开头的.
xargs -i'{}' mv .{} {} //把前边的输出作为命令行参数 传递给mv命令,-i'{}' 指定模版符号'{}' 表示前边传过来的参数
mac 命令行 批量把文件名前加'g21_'
ls -adl * | awk '{print $NF}' | xargs -I '{}' mv {} 'g21_'{}
ssh/scp
ssh -p 6000 root@xxx.com
ssh -i ~/xxx.pem root@xxx.com
scp -P 6000 root@xxx.com:/xxx.txt ./
scp -i ~/xxx.pem root@xxx.com:/xxx/xxx.txt ./
scp xxx.txt root@xxx.com:/xxx.txt
(-v detail info)
ssh/scp使用sock5代理连接
scp -P 8888 -o ProxyCommand="nc -x 127.0.0.1:1086 %h %p" root@ip:/root/xx.txt .
ssh -p 8888 -o ProxyCommand="nc -x 127.0.0.1:1086 %h %p" root@ip
traceroute 192.168.9.1 -n
telnet 192.168.1.2 8000 (only tcp, quit)
nc
nc -vzw 6 IP port (-w timeout time) //测试TCP端口
nc -vuzw 2 IP port //测试UDP端口
nc -l port //临时监听TCP端口
nc -lk port //永久监听TCP端口
nc -lu port //临时监听UDP
nc -luk port //永久监听UDP
linux 挂载 u盘
fdisk -l //查看当前插入的u盘
mkdir /mnt/udisk //创建挂载目录
mount /dev/xxx /mnt/udisk
umount /mnt/udisk
rsync copy file
1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
如:rsync -a ./test.c /backup
2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DES路径地址包含单个冒号":"分隔符时启动该模式。
如:rsync -avz test.c user@172.16.0.11:/home/user/src
3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
如:rsync -avz user@172.16.0.11:/home/user/src ./src
4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
如:rsync -av user@172.16.0.11::www /databack
5)从本地机器拷贝文件到远程rsync服务器中。当DES路径信息包含"::"分隔符时启动该模式。
如:rsync -av /databack user@172.16.0.11::www
6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
如:rsync -v rsync://172.16.78.192 /www
-v, --verbose 详细模式输出
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-z, --compress 对备份的文件在传输时进行压缩处理
lsof命令
通过list open file命令可以查看到当前打开文件,在linux中所有事物都是以文件形式存在,包括网络连接及硬件设备。
lsof -i:80
-i参数表示网络链接,:80指明端口号,该命令会同时列出PID,方便kill
查看所有进程监听的端口
sudo lsof -i -P | grep -i "listen"
netstat -nlp |grep LISTEN //查看当前所有监听端口·
netstat -nlp |grep 80 //查看所有80端口使用情况·
netstat -an | grep 3306 //查看所有3306端口使用情况·
dig www.baidu.com @127.0.0.1 -p 5353 //指定特定端口的dns服务 查ip
杀前6个有NODE 的进程:
ps aux | grep node | head -6 | awk '{print $2}' | xargs kill -9
统计已连接上的,状态为“established'
netstat -na|grep ESTABLISHED|wc -l
netstat -s命令
netstat -s | egrep "listen|LISTEN"
667399 times the listen queue of a socket overflowed
667399 SYNs to LISTEN sockets ignored
上面看到的 667399 times ,表示全连接队列溢出的次数,隔几秒钟执行下,如果这个数字一直在增加的话肯定全连接队列偶尔满了。
netstat -s | grep TCPBacklogDrop
查看 Accept queue 是否有溢出
ss命令
ss -lnt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6379 *:*
LISTEN 0 128 *:22 *:*
如果State是listen状态,Send-Q 表示第三列的listen端口上的全连接队列最大为50,第一列Recv-Q为全连接队列当前使用了多少。
非 LISTEN 状态中 Recv-Q 表示 receive queue 中的 bytes 数量;Send-Q 表示 send queue 中的 bytes 数值。
系统信息
cat /proc/cpuinfo
cat /proc/version
cat /etc/issue
cat /etc/lsb-release
uname -a
free -h
df -h
du
/var/log/wtmp //每个用户的登录次数和持续时间等信息
/var/log/btmp //详细,包括登录失败请求
/var/run/utmp //当前正在本系统中的用户的信息
将二进制文件转换为可编辑文件 wtmp.file
utmpdump /var/log/wtmp >/var/log/wtmp.file
将可编辑文件转换为二进制文件
utmpdump -r < /var/log/wtmp.file > /var/log/wtmp
crontab文件的含义:
六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
glibc版本查看
ldd --version
strings /lib/arm-linux-gnueabihf/libc.so.6 | grep GLIBC_