问题解析
查看内存总量
[root@localhost ~]# free -h ----人性化显示内存使用情况
total used free shared buff/cache available
Mem: 1.8G 329M 270M 9.1M 1.2G 1.2G
Swap: 4.0G 0B 4.0G
[root@localhost ~]# free -h |awk '/Mem/{print $2}' ----单独显示包含Mem这一行第二个数字
1.8G
如何解决中毒
- 利用top、ps aux等命令查看异常文件
- 通过进程号在/porc文件夹下对应文件夹中的exe软链接找到对应程序的位置
- 确认是否可以结束,可以则删除并建立同名文件,锁定文件
确定单线程,多线程
pstree (不准,分不清是线程还是子程序)
[root@localhost ~]# pstree -p |grep nginx ----查看进程树,过滤出需要的程序
|-nginx(745)---nginx(746)
grep -i threads /proc/进程的PID/status
[root@localhost ~]# grep -i threads /proc/745/status ----过滤出/proc文件夹中对应进程号的文件夹里的status文件中线程那行
Threads: 1
prtstat 进程pid号
[root@localhost ~]# prtstat 1033 |grep -i threads ----过滤出进程信息里的有线程的行
CPU#: 0 TTY: 0:0 Threads: 5
过滤僵尸进程
[root@localhost ~]# ps aux |grep -v grep |grep Z ----查看系统所有进程,排除grep进程,过滤出带Z的行
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 15273 0.1 0.0 0 0 pts/2 Z 13:48 0:00 [bash] <defunct>
[root@localhost ~]# ps aux |awk '$8~/Z/' ----查看系统所有进程,筛选第8列包含Z的行
root 15273 0.1 0.0 0 0 pts/2 Z 13:48 0:00 [bash] <defunct>
统计进程总数
1.top命令
[root@localhost proc]# top
top - 13:42:14 up 5:20, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 162 total, 2 running, 160 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1867048 total, 889420 free, 349012 used, 628616 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1285816 avail Mem
Tasks: 162 total ----162个进程
2.ps aux |wc -l
[root@localhost proc]# ps aux |wc -l
164
统计某用户的进程总数
pgrep -u用户名|wc -l或者ps aux |grep 用户名 |wc -l
[root@localhost proc]# pgrep -u saber |wc -l
1
根据pid号能找到进程的具体位置
[root@localhost ~]# ps aux k -%cpu ----查看运行的所有进程
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 736 0.1 0.3 305304 6312 ? Ssl 08:22 0:32 /usr/bin/vmtoolsd ----找出需要查找的进程
root 1 0.0 0.3 128164 6824 ? Ss 08:21 0:10 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 2 0.0 0.0 0 0 ? S 08:21 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 08:21 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 08:21 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 08:21 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 08:21 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 08:21 0:12 [rcu_sched]
root 10 0.0 0.0 0 0 ? S 08:21 0:00 [watchdog/0]
...
[root@localhost ~]# ll /proc/736/exe 在/proc文件夹中有对应进程号的文件夹查看其中的exe软链接可以查看对应的进程位置
lrwxrwxrwx. 1 root root 0 4月 18 08:22 /proc/736/exe -> /usr/bin/vmtoolsd
[root@localhost ~]#touch a;chattr +i a
删除了大文件但空间没有被释放
有用户在使用这个文件,rm -rf尽量避免使用
echo ' ' > 需清理的文件 ----在文件中输入空格可以替换原有内容从而释放空间
误删恢复
只在有人还在使用这个文件时可以恢复
bash1
[root@localhost ~]# tail -f 123
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
bash2
[root@localhost ~]# rm -rf 123
[root@localhost ~]# lsof |grep delete |grep 123
tail 10883 root 3r REG 253,0 272 17487132 /root/123 (deleted)
[root@localhost ~]# cd /proc/10883/fd
[root@localhost fd]# ll
总用量 0
lrwx------. 1 root root 64 4月 18 18:54 0 -> /dev/pts/0
lrwx------. 1 root root 64 4月 18 18:54 1 -> /dev/pts/0
lrwx------. 1 root root 64 4月 18 18:54 2 -> /dev/pts/0
lr-x------. 1 root root 64 4月 18 18:54 3 -> /root/123 (deleted)
lr-x------. 1 root root 64 4月 18 18:54 4 -> anon_inode:inotify
[root@localhost fd]# cat 3 > /data/123
[root@localhost fd]# cat /data/123
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
asuhfiuahsgilha
清理服务器缓存
[root@localhost vm]# cat drop_caches
0 ----不清理缓存
[root@localhost vm]# echo 3 >/proc/sys/vm/drop_caches
[root@localhost vm]# cat drop_caches
3 ----清理缓存
生成一个长度为8的随机密码
[root@localhost ~]# cat /dev/urandom |tr -dc 'A-Za-z0-9' | head -c 8
AwJ4RHgA[root@localhost ~]#
#/dev/urandom:提供了一个无需阻塞的随机数据流。
#tr -dc 'A-Za-z0-9':通过tr命令删除(-d)所有非目标字符(-c),只保留大小写字母和数字。
#head -c 8:取前8位字符作为随机密码。