实用的运维命令
#随机密码生成:
echo "`date '+%D%N'` $RANDOM $RANDOM `date '+%D%N'`" | md5sum | head -c 16 && echo ''
#查询DDOS攻击IP列表:
linux: netstat -an|grep -i syn_recv|awk '{print $5}'|awk -F\: '{print $1}'|sort|uniq -c
bsd: netstat -an|grep -i syn_recv|awk '{print $5}'|awk -F\. '{print $1"."$2"."$3"."$4}'|sort|uniq -c
#取IP地址
ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
#按cpu利用率从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -nr
#vim 批量替换
%s/lvzheng/testlvzheng/g
#列出cpu 占有率高于 8% 的进程的PID
ps aux | awk '{ if ($3 > 8 ) print $2}'
监控java线程数:
ps -eLf | grep java | wc -l
监控网络客户连接数:
netstat -n | grep tcp | grep 侦听端口 | wc -l
上面两个命令,可改动grep的参数,来达到更细致的监控要求。
在Linux系统一切都是文件的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标,例如task目录就是用来描述进程中线程的,因此也可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID):
ls /proc/PID/task | wc -l
在linux中还有一个命令pmap,来输出进程内存的状况,可以用来分析线程堆栈:
pmap PID
#TCP状态
# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
# netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
# sysctl -a|grep net.ipv4.tcp_tw
# sysctl -a | grep time | grep wait
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
#清除僵死进程
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
#查杀mysql进程
ps aux|grep mysql|grep -v grep|awk '{print $2}'|xargs kill -9
#查杀进程PID
kill -9 `cat /var/jboss.pid`
#查杀8080端口相关的进程
lsof -i :8080|grep -v "PID"|awk '{print "kill -9",$2}'|sh
#tcpdump 抓包
# tcpdump -c 10000 -i eth0 -n dst port 80 > /root/tcpdump.log
#让linux的history命令显示时间记录
vim /etc/bashrc
添加:
#by:fyc
HISTFILESIZE=2000 #定义了在 .bash_history 中保存命令的记录总数
HISTSIZE=2000 #定义了 history 命令输出的记录数
#HISTIMEFORMAT="%Y%m%d-%H%M%S: " #定义了执行命令的时间格式
HISTTIMEFORMAT='%F %T ' ##这个方法显示更清晰。
#!/bin/sh
ID=`ps -ef | grep "java" | grep -v "$0" |grep jboss-4.2.2.GA_***| grep -v "grep" | awk '{print $2}'`
for pid in $ID;
do
echo 时间:`date +%Y-%m-%d_%H:%M:%S`
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "[jboss-4.2.2.GA_***]'s process: $pid";
echo "-------------------------------------------------------------------------------------------------------------------"
pstree -p ${pid}
echo "-------------------------------------------------------------------------------------------------------------------"
cat /proc/${pid}/status
echo "-------------------------------------------------------------------------------------------------------------------"
进程打开的文件句柄
lsof -n | grep $pid |wc -l
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
done