Linux之进程和计划任务管理(隔壁姐姐都看呆了)

101 阅读5分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天, 点击查看活动详情

进程

什么是进程:

  • 开发写的代码称为程序,我们将这个程序运行起来称为进程。

什么是线程:

  • 是操作系统内运行调度的最小单位,包含在进程中,是进程中的实际运作单位。

查看进程信息

静态查看进程信息 ps

  • ps aux
  • ps -elf(注意一定有-)
  • ps -aT (查看线程信息)

常用选项:

a:显示终端上所以的进程,包括其他用户的进程

u:表示列出进程的用户

x:显示所有终端的进程

-e:显示系统内所有的进程信息

-l:使用长格式显示进程信息

-f:使用完整的格式显示进程信息

-a:显示所有进程的pid

-T:查看线程信息

  • ps aux 各字段的含义 image.png
  1. user:进程的用户
  2. pid:进程的id
  3. %cpu:进程占用的cpu百分比
  4. %mem:进程占用的内存百分比
  5. vsz:进程使用的虚拟内存量
  6. rss:进程占用的物理内存量
  7. ttl:启动进程的终端名,不是从终端启动的进程则显示?
  8. stat:该进程的状态(D:不可中断的休眠状态,R:正在运行状态,S:可被唤醒的休眠状态,T:停止状态,Z:僵尸进程)
  9. start:该进程被触发启动时间
  10. time:该进程实际使用cpu运行的时间
  11. command:进程的启动命令

僵尸进程:僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源。

  • ps -elf各字段含义

image.png

  1. F:内核分配给进程的系统标记
  2. S:进程的状态
  3. UID:启动这些进程的用户
  4. PID:进程的进程id
  5. PPID:父进程的进程号
  6. C:进程生命周期中的cpu利用率
  7. PRI:进程的优先级(数字越大优先级越低)
  8. NI:谦让度值用来参与与决定优先级
  9. ADDR:进程的内存地址
  10. SZ:假如进程被换出,所需交换空间的大小
  11. WCHAN:若该进程在休眠,则显示睡眠中的系统函数名
  12. STIME:进程启动的系统时间
  13. TTY:进程启动时的终端设备
  14. TIME:运行进程需要的累计cpu时间
  15. CMD:进程的启动命令

动态查看进程信息 top

  • top -H(查看线程)

image.png

  • load average(系统负载平均值):后面三个数值代表一分钟,五分钟,十五分钟的负载情况,如果超过cpu内核的百分之七八十,代表高负载,会出现问题。

  • top w uptime 均可查看

image.png

  • buff(缓冲)/cache(缓存):- 缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入。

top常用命令:

  • P键:根据cpu使用百分比大小进行排序
  • M键:根据驻留内存大小进行排序
  • N键:根据启动时间进行排序
  • c键:切换显示命令名称和完整命令行
  • h键:获得top程序的在线帮助信息
  • k键:根据输入的pid号中止相对进程
  • q键:退出top程序
  • 数字1键:显示cpu的个数和状态

根据条件查看进程 pgrep

  • -U:指定用户
  • -l:显示进程名
  • -t:指定终端(TTL)

image.png

根据树状结构查看进程 pstree

  • -a:显示启动每个进程对应的完整指令
  • -p:显示PID
  • -u:显示进程的用户名称

image.png

进程控制

启动进程

  • 前台启动:用户输入命令,直接执行程序。
  • 后台启动:在命令行尾加入“&”符号(在后台中可以查看到)
  • 使用at命令,设置一次性计划任务。
  • 使用crontab命令,设置周期性计划任务。

调度进程

  • &:将任务放到后台执行
  • ctrl z:将当前进程挂起,调入后台停止运行
  • jobs:查看后台的任务列表
  • fg 序号:恢复后台任务,序号是指定
  • bg序号:将后台的的任务继续执行

image.png

中止进程

  • kill pid
  • killall 进程名
  • pkill [-U 用户名] 进程名
  • pkill [-t 终端号] 进程名
  • -9:强制

kill与kill -9的区别:kill默认-15 ,两者接收的信号不同 ,kill是SIGTERM,让进程自行停止并退出,kill -9是SIGKILL,强制让进程停止退出,不能忽略

常用信号

image.png

计划任务管理

一次性任务设置at

步骤:

  1. at HH:MM yyyy-mm-dd (指定时间编排)
  2. 设置命令 ctrl d (提交命令)
  3. atq (查询任务列表)
  4. atrm(删除任务)

image.png

周期性任务设置crontab

主要设置文件:

全局配置文件,位于文件: /etc/crontab

系统默认的设置,位于目录: /etc/cron.*/

用户定义的设置, 位于文件: /var/spool/cron/用户名

  •  crontab -e [-u 用户名]     编辑计划任务

  •  crontab -l [-u 用户名]     查看计划任务  

  •  crontab -r [-u 用户名]     删除计划任务  

 -u选项缺省时默认针对当前用户,只有超级用户才可以使用-u

  • 首先要确保crond服务是打开的。 image.png

  • crontab任务配置的格式

image.png

image.png

  • 时间数值的特殊表示方法
表示方法含义
*表示任意时间
表示不连续的时间间隔
-表示连续时间范围
/表示间隔频率

实例

  • 编辑计划任务 image.png

  • 查看任务,删除任务

image.png

注:以下两种方式也可以计划编辑任务

1.直接用 vim /etc/crontab 进行编辑计划任务

2.使用 echo ‘什么时候要执行的计划任务’ > /var/spool/cron/root 来编辑计划任务