9 进程管理
一、进程管理的作用
判断服务器健康状态
查看系统中所有的进程
杀死进程
二、进程查看的命令
1、ps aux (aux之前没有-)
输出:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER:该进程是由哪个用户产生的;
PID:进程的 ID 号;
%CPU:该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位 KB;
RSS:该进程占用实际物理内存的大小,单位 KB;
TTY:该进程是在哪个终端中运行的。其中 tty1-tty7 代表本地控制台终端(可以通过alt+F1-F7 键切换不同的终端),tty1-tty6 是本地的字符界面终端,tty7 是图形终端。
pts/0-255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用的是 pts/0 终端。第二个远程连接占用 pts/1,依次增长。
STAT:进程状态。常见的状态有:
R:该进程正在运行
S:该进程在睡眠状态,可被唤醒
T:停止状态,可能是在后台暂停或进程在除错状态
START:该进程的启动时间
TIME:该进程占用 CPU 的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
2、ps -el
3、top
top的一些输出内容:
load average: 0.00, 0.00, 0.00 (一般认为不应该超过服务器 CPU 的核数。)
系统在之前 1 分钟,5 分钟,15 分钟的平均负载。
Tasks: 95 total
系统中的进程总数
0 zombie
僵尸进程(进程已经终止,但是部分程序还在内存当中。)
99.7%id
空闲 CPU 的 CPU 百分比
这个命令输出项比较多,最主要是通过第一行的load average: 0.00, 0.00, 0.00,第三行的99.7%id,第四行和第五行的free判断系统当前的负载。
让 top 命令只执行一次,让后把结果保存到 top.log 文件中。这样就能看到所有的进程了
top -b -n 1 >top.log
4、pstree
查看进程树
三、进程管理
kill -l 查看系统识别的信号,常用的信号有
1该信号让进程立即关闭,然后重新读取配置文件之后重启。
9用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。一 般用于强制终止进程。
kill +pid
按照进程名来杀死进程。
killall +进程名 可以杀死一类或一组
pkill +进程名
踢掉某一个远程连接终端
pkill -9 -t pts/1
四、工作管理
1、放入后台
命令后 &
ctrl+z(暂停)
fg 恢复到前台
bg 恢复到后台
脱离终端 nohup
查看后台工作
jobs -l(显示PID)
2、系统资源查看
vmstat 命令监控系统资源
demesg 显示开机时内核检测信息
free 显示开机时内核检测信息
cat /proc/cpuinfo 查看 CPU 信息
cat /proc/meminfo 查看内存信息
w 第一行是top的第一行,查看系统中登录的用户
who 查看系统中已经登录的用户
uptime 看到的是top的第一行,显示系统的启动时间和平均负载
uname -a -r
file /bin/ls 判断多少位系统
lsb_release -a 查看系统版本
五、定时任务
1、at:
at一次性执行定时任务(默认服务是开启的) atd服务开启后at命令才可以执行
at 的访问控制是依靠/etc/at.allow 文件(白名单,系统默认没有这个文件)和/etc/at.deny 文件(黑名单)这两个文件来实现的如果系统中有/etc/at.allow 文件,那么只有写入/etc/at.allow 文件(白名单)中的用户 可以使用 at 命令,其他用户不能使用 at 命令(/etc/at.deny 文件会被忽略,也就是说同一 个用户既写入/etc/at.allow 文件,也写入/etc/at.deny 文件,那么这个用户是可以使用 at 命令的,因为/etc/at.allow 文件优先级更高。)
如果系统中没有/etc/at.allow 文件,只有/etc/at.deny 文件,那么写入/etc/at.deny 文件 (黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。
不过这个文件对 root 用户不生效。
如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。
用法:
at 11:30 回车 touch /abc123 ctrl+D
atq 查询当前服务器上的 at 工作
at -c 工作号 显示该 at 工作的实际内容
atrm [工作号] 删除指定的 at 任务
2、crontab
crontab也是一个服务,默认开启crond
crontab 命令和 at 命令类似,也是通过/etc/cron.allow 和/etc/cron.deny 文件来限制某些用户是否可以使用 crontab 命令的。而且原则也非常相似
每个用户都可以实现自己的 crontab 定时任务,只要是使用这个用户身份执行“crontab -e”命令即可,只不过运行命令的用户是其自己。
用法:
crontab -e #编辑 crontab 定时任务(命令最好写绝对路径)
例子:
1、0 5 * * * #每天5点执行
2、0 12 * * 1 #每个周一12点执行
3、30 4 1,15 * * #每个月1号和15号的4点30执行
4、40 4 * * 1-5 #每个周一到周五的4点40执行
5、*/10 5 * * * #在5点每隔十分钟执行一次
6、0 0 1,15 1 #每个月1号或15号或者是周一的0点执行(最好日期和星期不要一起出现)
7、30 * * * * #每小时第30分执行
在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都是用绝对路径。
crontab -l #查询 crontab 任务
crontab -r #删除当前用户所有的 crontab 任务,如果有多个任务,只想删除一个,可以所以用“crontab -e”
3、使用配置文件/etc/crontable 可以指定用户身份(只能root来定义)
vim /etc/crontable 格式
* * * * * user-name 命令
4、、anacron
在关机的时 间段之内有系统定时任务(cron)需要执行,那么这些定时任务是不会执行的,anacron 就是用来解决这个问题的。
在系统的/var/spool/anacron/ 目录中存在 cron.{daily,weekly,monthly}文件,这些文件中都保存着 anacron 上次执行时的时间。anacron 会去 读取这些文件中的时间,然后和当前时间做比较,若果两个时间的差值超过了 anacron 的指定时间差值(一般是 1 天,7 天和一个月),就说明有定时任务漏掉了没有被执行,这时 anacron 会介入而执 行这个漏掉的定时任务,从而保证在关机时没有被执行的定时任务不会被漏掉。
用法
anacron [选项] [工作名]
在我们当前的 Linux 中,其实不需要执行任何 anacron 命令,只需要配置好/etc/anacrontab 文 件,系统就会依赖这个文件中的设定来通过 anacron 执行定时任务。那么关键就是/etc/anacrontab 配置文件的内容了
我们只需要把需要定时执行的脚 本放入 /etc/ cron.{daily,weekly,monthly}目录当中,就会每天、每周或每月执行,而且也不再需要 启动 anacron 服务了。我们如果做修改的话,只用修改/etc/anacrontab 配置文件即可。
anacron只会检测 /etc/ cron.{daily,weekly,monthly}这些目录有没有漏执行,在特殊情况下可能会用到。