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}这些目录有没有漏执行,在特殊情况下可能会用到。

posted @ 2019-08-21 19:56  留白、  阅读(136)  评论(0编辑  收藏  举报