su user_name 切换用户
1.查看端口号占用 和查看服务是否启动。
lsof -i:端口号 例如 lsof -i:8080
$ lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
WeChat 489 songyang 28u IPv6 0x6dcb321b8c5aa229 0t0 TCP bogon:53478->223.167.104.149:http-alt (ESTABLISHED)
QQ 498 songyang 15u IPv4 0x6dcb321b98929929 0t0 TCP lalal:55488->no-data:http-alt (ESTABLISHED)
QQ 498 songyang 19u IPv4 0x6dcb321b98929929 0t0 TCP lalal:55488->no-data:http-alt (ESTABLISHED)
ps -ef|grep redis 查看redis是否启动
netstat -tnlp 显示tcp的端口和进程的相关情况。
2.杀死端口
kill -9 PID 例如 kill -9 489
3.查看文件大小
du -sh *
$ du -sh *
312K 任务分割.xlsx
312K 任务分割2.xlsx
查看磁盘使用量
df -lh
4.top
查看每个进程的占cpu百分比
ps -ef | grep 进程号
查看该进程详细信息
5.查看占用CPU最多的前10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
6.查看占用内存最多的前10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
补充:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
java.lang.OutOfMemoryError: Unable to create new native thread
当JVM向OS申请创建线程,而OS不能分配一个本地线程时抛出。
7.查看系统最多可以创建多少个进程 我的是 32768
sysctl -a | grep kernel.pid_max 或者 cat /proc/sys/kernel/pid_max
8.修改系统最大进程数为200000
echo 200000 > /proc/sys/kernel/pid_max
9.查看系统可以允许的最大的线程数 我的是 126946
cat /proc/sys/kernel/threads-max
10.修改系统可以允许的最大线程数为 120000
echo 120000 > /proc/sys/kernel/threads-max
11.查看系统是否允许用户申请足够多的进程(包含线程)
ulimit -a
ulimit -u 默认的最大线程
ulimit -s 默认的最大栈
12.查看运行现状
cat /proc/loadavg
0.04 0.04 0.10 1/6788 31909
以上几个数分别表示
一分钟平均负载0.04 5分钟平均负载0.04 15分钟平均负载0.10 当前有一个进程正在运行,总进程数是6788,最近运行的进程ID是31909
13 .查看当前进程数
ps -elf | wc -l
14. 查看当前线程数
ps -elfT | wc -l
14. 查看某个进程的线程数
ps -p 3239 -lfT | wc -l
15. 查看某个进程的线程详细
jstack -l 3239 | more
16. 添加例行计划任务
因为两台服务器时间不一致,导致java的定时任务不能同时执行,进而导致了重复执行,因为redis锁已经没用了。所以需要同步两台服务器的时间
crontab -l 查看当前的例行计划任务
crontab -e 进入编辑状态
添加下面一行并保存。
*/5 * * * * /sbin/ntpdate ntp1.aliyun.com 表示每5分钟同步一下服务器时间。让其与时间服务器的时间一致。