- 磁盘相关,挂载信息,格式化
- 网络相关
- 设置代理服务器
- 查看网络连接情况, netstat,端口使用 lsof
- 查看域名解析情况, dig nslookup
- ip工具 查看网卡,查看路由表,代替ifconfig 和 route
- iptales ip封禁和流量转发
- mysql 相关语句和命令
- 语句,添加用户,设置权限,表空间
- mysqldump,备份
- bash 一些语法
- 其他工具
- rsync同步文件,一般系统自带
- ffmpeg 视频剪辑,裁剪打码字幕倍速合并等,真神,这个需要额外安装
- 进程信息查看, ps, pmap, lsof
- JAVA 内存分析, jcmd jstat jmap jhat
分享一些我平时用到的常见命令
都是系统自带命令,其实命令很简单,但是一般也不记,属于要用时也要查一下的
也可能是年纪大了,记不住了
磁盘相关,挂载信息,格式化
1 2 3 4 5 6 7 8 9 10 11 12 13
| fdisk -l blkid /dev/vdc
mkfs.ext4 -q /dev/vdc
mount /dev/vdc /mnt
mount_ntfs -o "rw,auto,nobrowse" /dev/disk2s1 /mnt
|
网络相关
设置代理服务器
属于是约定熟成的规范,后续的命令如果有网络请求可能会使用,也不一定。也有node xxx.js
时,不支持socks5
代理要单独安装依赖的情况。
1 2 3 4 5 6
| export HTTP_PROXY='http://user:password@127.0.0.1:8123' export HTTPS_PROXY='http://user:password@127.0.0.1:8123' export HTTPS_PROXY='socks5://127.0.0.1:10080' export ALL_PROXY='socks5://127.0.0.1:1080'
|
查看网络连接情况, netstat,端口使用 lsof
服务器被网络攻击,ddos/cc估计时非常有效,
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
netstat -an | grep "tcp"| awk ' {print$6}' | sort|uniq -c | sort -rn
netstat -nat|grep "tcp"| awk ' {print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn | head -n10
lsof -i :8080
|
查看域名解析情况, dig nslookup
两种工具,服务器有哪个就用哪个,要安装
1 2 3 4 5 6 7 8
| dig baidu.com dig baidu.com @8.8.8.8 MX
nslookup baidu.com nslookup -type=MX baidu.com 8.8.8.8
|
ip工具 查看网卡,查看路由表,代替ifconfig 和 route
1 2 3 4 5 6 7 8 9 10 11 12
|
ip addr ip addr show eth0 ifconfig
ip route ip route get 8.8.8.8 route
|
iptales ip封禁和流量转发
我主要3个功能,
1. 封禁IP
2. DNAT功能,内网服务器共用一个公网服务器连外网
3. SNAT功能,外部服务器端口流量转发到内网服务器
DNAT和SNAT如果买了云服务器,基本也都可以直接买来用,一般叫做网关,但是我们比较抠,自建了,但是稳定性一般。
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
|
iptables -I INPUT -s 192.168.2.2 -p tcp --dport 9999 -j DROP
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0 -j MASQUERADE iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to 10.0.0.5:3306 iptables -t nat -A POSTROUTING -p tcp -d 10.0.0.5 --dport 3306 -j SNAT --to 10.0.0.4
iptables -D POSTROUTING -s 192.168.0.0/16 -o eth0 -j MASQUERADE
iptables -F POSTROUTING
iptables -t nat -L --line-numbers
|
mysql 相关语句和命令
每次手动运行的时候都要查一下,确实是人老了记不住了,而且mysql版本更新了中间出现过不兼容的问题
语句,添加用户,设置权限,表空间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
CREATE USER 'username'@'%' IDENTIFIED BY 'passswd';
GRANT ALL ON uudb.* to 'username'@'%';
FLUSH PRIVILEGES;
SELECT table_name, table_rows, TRUNCATE(data_length/1024/1024, 2) AS 'size(MB)', TRUNCATE(index_length/1024/1024, 2) AS 'index(MB)' FROM information_schema.tables WHERE table_schema='uudb' ORDER BY data_length DESC, index_length DESC;
|
mysqldump,备份
用户mysqldump备份表,对5.x、8.x、mariadb不同版本之间有兼容性问题,部分命令参数不太一样,还会报错,我服了。
我搞的也有点混乱,其实有时候我只想要生成语句,但是就是会产生 GTID_PURGED
, LOCK TABLES
, SET @@SESSION.SQL_LOG_BIN
各种SET
指令,不同版本服务导入的时候就无法导入了。
1 2 3 4 5 6 7 8 9
| mysqldump --compact --no-data -huudb.dba.host -uusername -p123456 uudb sometable > bk_table_struct.sql
mysqldump --compact --single-transaction --no-set-names --insert-ignore --no-create-info --compress -huudb.dba.host -uusername -p123456 uudb sometable --where="id<'69'" > bk_data.sql
msyql -huudb.dba.host -uusername -p123456 uudb < bk_table_struct.sql
|
bash 一些语法
条件判断, if
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
if [ -f "$file1" ] then elif [ -f "$file2" ] then else fi
[ -d "$FILE" ] [ -f "$FILE" ] [ -e "$FILE" ] [ -z "$STRING" ] [ -n "$STRING" ] [ "$STRING" ] [ "$STRING" = "val1" ] [ "$NUMBER" -eq "num1" ]
[ "$STRING1" = "val1" -a "$STRING2" = "val2"] [ "$STRING1" = "val1" -o "$STRING2" = "val2"]
|
循环 while
不要用 for in
,多用 while read
for in
不一定按行,默认也会把空格也作为切分符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
cat ./tmp | grep xxxx | while read i; do echo $i done
hostlist=( "10.0.0.37" "10.0.0.42" "10.0.0.55" ) for host in ${hostlist[@]};do echo $host done
|
其他工具
rsync同步文件,一般系统自带
同步文件夹神器, rsync 参数比较复杂,我常用下面这个参数
1
| rsync -rtzvL --out-format="%t %n %b" --exclude=".DS_Store" ./ user@host.name:/home/user/data/
|
ffmpeg 视频剪辑,裁剪打码字幕倍速合并等,真神,这个需要额外安装
输入和输出可以任何格式,是任何格式。例如视频(mp4、mov、flv、mov、m3u8、rtsp),音频(mp3、wav),图片(jpg、png、gif)、字幕(srt、vtt),我都列不过来。
输入的也可以是网络地址。真的绝了
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
| export x=20 export y=20 export w=95 export h=50
ffmpeg -y -i ./input.mp4 -to "02:20" -vf "delogo=x=${x}:y=${y}:w=${w}:h=${h}" "input.delogo.mp4"
ffmpeg -y -i ./input.mp4 -filter_complex "[0:v]crop=${w}:${h}:${x}:${y},boxblur=10[fg];[0:v][fg]overlay=${x}:${y}[v]" -map "[v]" "input.blur.mp4"
ffmpeg -y -i ./input.mp4 -stream_loop -1 -i logo.gif -filter_complex "[1:v]scale=${w}:${h}[g];[0:v][g]overlay=${x}:${y}:shortest=1" "input.cover.mp4"
ffmpeg -y -i 'input.mp4' -ss "00:10" -to "01:00" 'input.out.mp4'
ffmpeg -y -i 'input.mp4' -vf subtitles='input.en.vtt' 'input.out.mp4'
ffmpeg -i "input.mp4" -filter_complex "[0:v]setpts=0.8*PTS[v];[0:a]atempo=1.25[a]" -map "[v]" -map "[a]" "input2.mp4"
|
进程信息查看, ps, pmap, lsof
1 2 3 4 5 6 7 8 9
| ps -mp 53 -o THREAD,tid,time,rss,size,%mem ps aux
lsof ./somefile
lsof -p 53
|
JAVA 内存分析, jcmd jstat jmap jhat
没有深入研究,只是临时用了一下,JDK自带的工具集合,
工具是很多,但是没有过用几次,差生文具多
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| pmap -x 53 cat /proc/53/smaps > smaps.txt
jcmd 53 GC.heap_dump ./out jcmd 53 GC.heap_dump -all ./out jcmd 53 GC.heap_info
jstat -gc 53 jstat -gcutil 53 jstat -class 53 jmap -heap 53 jmap -histo 53 | head jmap -histo:live 53 | head jmap -dump:live,format=b,file=jmap.dump.log 53 jhat -J ./jmap.dump.log
gdb attach 53 dump memory ./xxxxxx.dump
|