前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >搞它!!!Linux系统中查看进程和计划任务管理

搞它!!!Linux系统中查看进程和计划任务管理

作者头像
不吃小白菜
发布2020-09-03 10:02:55
2.6K0
发布2020-09-03 10:02:55
举报
文章被收录于专栏:用户7721898的专栏

首先我们了解一下程序和进程的关系:

程序: 保存在 、光盘等介质中的可执行代码和数据静态保存的代码 进程: 在CPU及内存中运行的程序代码动态执行的代码

一、查看进程

1、查看静态的进程统计信息(ps)

ps命令(查看静态的进程统计信息Processes Statistic) 是Linux系统中最为常用的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照,通过不同的命令选项,可以有选择性的查看进程信息 ps -aux(将以简单列表形式显示出进程信息):

代码语言:javascript
复制
   a:显示当前终端下所有进程信息,包含其他用户进程。与“x”选项结合时显示系统中所有进程信息
   u:使用以用户为主的格式输出进程信息
   x:显示当前用户在所有终端下的进程信息

  -e:显示系统内的所有进程信息
  -l:使用长格式显示进程信息
  -f:使用完整的格式显示进程信息
代码语言:javascript
复制
[root@localhost 桌面]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.3  0.1  19360  1544 ?        Ss   16:29   0:02 /sbin/init
root          2  0.0  0.0      0     0 ?        S    16:29   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    16:29   0:00 [migration/0]
root          4  0.0  0.0      0     0 ?        S    16:29   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S    16:29   0:00 [migration/0]

下面来解释一下各字段含义

代码语言:javascript
复制
1、USER:用户
2、PID:进程号(ls -l | grep init可以看到init的软链接,1进程为init)
3、%CPU:进程的cpu占用率
4、%MEM:进程的内存占用率
5、VSZ:虚拟内存占用
6、RSS:物理内存占用
7、TTY:终端(?代表未知,大多为本地)
8、STAT:当前进程状态,其中
“S”:可中断休眠进程
“D”:不可中断休眠进程
“s”:父进程
“<”:代表优先级高
“N”:代表优先级低
“R”:代表正在运行的进程
“I”:多线性进程
“Z”:僵尸进程
“+”:前台进程
9、START:启动时间
10、TIME:进程占用cpu的总时间
11、COMMAND:进程的名称

ps -elf(将以长格式显示系统中的进程信息):

代码语言:javascript
复制
[root@localhost 桌面]# ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 -  4840 poll_s 16:29 ?        00:00:02 /sbin/init
1 S root          2      0  0  80   0 -     0 kthrea 16:29 ?        00:00:00 [kthreadd]
1 S root          3      2  0 -40   - -     0 migrat 16:29 ?        00:00:00 [migration/0]
1 S root          4      2  0  80   0 -     0 ksofti 16:29 ?        00:00:00 [ksoftirqd/0]
1 S root          5      2  0 -40   - -     0 cpu_st 16:29 ?        00:00:00 [migration/0]
5 S root          6      2  0 -40   - -     0 watchd 16:29 ?        00:00:00 [watchdog/0]
1 S root          7      2  0 -40   - -     0 migrat 16:29 ?        00:00:00 [migration/1]
1 S root          8      2  0 -40   - -     0 cpu_st 16:29 ?        00:00:00 [migration/1]
1 S root          9      2  0  80   0 -     0 ksofti 16:29 ?        00:00:00 [ksoftirqd/1]
5 S root         10      2  0 -40   - -     0 watchd 16:29 ?        00:00:00 [watchdog/1]
1 S root         11      2  0  80   0 -     0 worker 16:29 ?        00:00:01 [events/0]
1 S root         12      2  0  80   0 -     0 worker 16:29 ?        00:00:00 [events/1]
1 S root         13      2  0  80   0 -     0 worker 16:29 ?        00:00:00 [cgroup]
1 S root         14      2  0  80   0 -     0 worker 16:29 ?        00:00:00 [khelper]

了解一下各字段含义

代码语言:javascript
复制
1、PPID:当前进程的父进程
2、PIR:用户态(人可以进行交互额)优先级
3、NI:内核态优先级(-20~19,数值越低优先级越高)
4、ADDR:-代表正在运行
5、SZ:占用swap交换分区的容量
6、WCHAN:当前进程内核态的名称
7、CMD:命令名称

2、查看静态的进程统计信息(top)

使用ps命令查看到的是一个静态的进程信息,并不能连续的反馈出当前进程的运行状态,若希望以动态刷新的方式显示各进程的状态信息,可以使用top命令,该命令将会在当前终端全屏交互式的界面显示进程排名,及时跟踪包括CUP、内存等系统资源占用情况,默认情况下每隔3秒刷新一次,其作用类似于windows系统中的“任务管理器”。

Linux系统中查看进程和计划任务管理 表中的信息表述含义如下:

代码语言:javascript
复制
1、total:总进程数
2、running:正在运行的进程数
3、sleeping:休眠的进程数、
4、stopped:中止的进程数
5、zombie:僵死无响应的进程数
6、%Cpu(s):CPU占用信息,其中:
“us”:用户占用
“sy”:内核占用
“ni”:内核调度优先级
“id”:空闲空间占用
“wa”:IO读写占用
“hi”:硬线程占用
“si”:软线程占用
“st”:虚拟化占用
7、Men:内存占用信息,其中:
“total”:总内存空间
“free”:空闲内存
“used”:已用内存
“buff/cahce”:缓存占用
8、Swap:交换空间占用,其中:
“total”:总交换空间
“free”:空闲交换空间
“used”:已用交换空间
“avail men”:物理占用

3、pgrep命令(查询进程信息)

当使用ps命令查询某个进程新的PID信息时,往往需要配合grep命令对输出结果进行过滤,但这样使用非常不方便,而pgrep命令则正是用来查询特定进程信息的专用工具,使用pgrep命令可以根据进程的名称、运行该进程的用户、进城所在的终端等多种属性查询特定进程的PID号。

代码语言:javascript
复制
-l:既显示PID也显示进程名

-U:查看指定用户的进程,此处例如zhangsan

4、pstree命令(查看进程树)

pstree命令可以输出Linux系统中各进程的树形结构,更加直观的判断出各进程之间的相互关系(父、子进程)。 常用选项:

代码语言:javascript
复制
-p:同时列出相对应的PID号
-u:列出相对应的用户名
-a:列出完整的命令信息

二、控制进程

1、进程的启动方式

(1)手工启动

前台启动:用户输入命令,直接执行程序 后台启动:在命令行尾加入按&符号

代码语言:javascript
复制
[root@localhost~]#cp /dev/cdrom mycd/iso & 

(2)调度启动

使用at命令,是指一次性计划任务 使用crontab命令,设置周期性计划任务

(3)进程的前后台调度

1、Ctrl+Z组合键: 当Linux系统中的命令正在前台执行时,按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。 2、jobs命令: 需要查看当前终端中在后台运行的进程任务时,可以使用jobs命令,结合“-l”选项可以同时显示处该进程对应的PID号,在jobs命令的输出结果中,每一行记录对应一个后台进程的状态信息,首行的数字表示该进程在后台的任务编号。 3、fg命令: 将后台进程恢复到前台运行,可指定任务序号,示例如下:

代码语言:javascript
复制
 [root@localhost~]#jobs
[1]- Stopped cp/dev/cdrom mycd.iso
[2]+ Stopped top
[root@localhost~]#fg 1

(3)终止进程的运行

1、Ctrl+C组合键 中断正在执行的命令 2、kill、killall命令(跟号码,具有唯一性) 常用选项:

代码语言:javascript
复制
kill:用于终止指定PID号的进程
killall:用于终止指定名称的所有进程
-9:选项用于强制终止

pkill命令 1.根据特定条件终止相应的进程 2.常用选项:

代码语言:javascript
复制
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程

如果此时我们想把张三用户踢出,使用Xshell界面登录的root账户下输入:pkill -9 -U zhangsan,敲回车,此时系统会自动跳回开机之后的用户登录界面,zhangsan用户的所有进程全部被终止

三、at一次性任务设置

格式:at [HH:MM] [yyyy-mm-dd] 具体执行操作如下:

代码语言:javascript
复制
1、[root@localhost~]#date(获取系统的当前时间)
2、2019年 08月 24日 星期六 16:08:24 CST
3、[root@localhost~]#at 16:12 2019-08-24(计划性时间要在系统当前时间之后)
4、at>ps aux | wc -l > /opt/ps.txt(确定执行的动作)
5、ctrl+d(提交)
6、atq(查看计划任务)
7、atm2删除第二条任务计划
Linux系统中查看进程和计划任务管理
到了计划时间之后输入:ls /opt/查看目录
此时显示计划的文件ps.txt被写入
Linux系统中查看进程和计划任务管理

四、 crontab周期性任务设置

crontab(定时任务) 使用crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻重复性系统管理任务的操作 软件包cronie 提供crontab工具,系统服务crond和配置文件 /etc/crontab。 开启系统服务crond 是启动周期性任务的前提条件

1、crontab的配置文件和目录

crond通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件来配置

(1) /etc/crontab 全局配置文件

全局配置文件

/etc/crontab 文件中设置的是维护Linux系统所需的任务

Linux系统及相关程序在安装时自动设置

不建议用户手动修改此文件

代码语言:javascript
复制
[root@localhost ~]# cat /etc/crontab		'//查看系统任务配置文件'
SHELL=/bin/bash				'//设置执行计划任务的Shell环境'
PATH=/sbin:/bin:/usr/sbin:/usr/bin			'//定义可执行命令及程序的路径'
MAILTO=root				'//将任务输出信息发送到指定用户的邮箱'
HOME=/ 			'//执行计划任务时使用的主目录'

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)		'//分钟范围:0-59'
# |  .------------- hour (0 - 23)		'//小时范围:0-23'
# |  |  .---------- day of month (1 - 31)		'//一个月的天数范围:1-31'
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...		'//月数范围:1-12'
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat		'//一周的天数范围: 0-6(周日用0或者7表示)'
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

2、/etc/cron.*/ 系统默认设置

系统默认设置cron任务的配置文件存放目录

软件包crontabs安装后,会在/etc/cron.*/目录下生成存放一些系统默认设置的计划任务目录,设置了系统每个小时,每一天做些什么任务

例如:

/etc/cron.hourly/ 目录下存放的是系统每小时要做的任务可执行脚本

/etc/cron.daily/ 目录下存放的是系统每天要做的任务可执行脚本

/etc/cron.weekly/ 目录下存放的是系统每周要做的任务可执行脚本

/etc/cron.monthly/ 目录下存放的是系统每月要做的任务可执行脚本

这些是可执行脚本,不是cron配置文件,crond服务通过run-parts 工具调用执行这些脚本

3、/var/spool/cron/用户名 用户定义的位置

用户自行设置的cron计划任务将被保存到目录/var/spool/cron/中

用户使用crontab命令创建计划任务,就会在/var/spool/cron/目录下生产一个与用户名相同的文件

例如:root用户的cron计划任务保存在配置文件/var/spool/cron/root中

crond守护进程会自动检查上述三个文件,若有配置更改,就会载入内存,不需重启crond守护进程就可以使设置生效

代码语言:javascript
复制
[root@localhost ~]# ls -l /var/spool/cron/*
ls: 无法访问/var/spool/cron/*: 没有那个文件或目录		'//没有创建任务'

2、使用crontab命令管理用户的计划任务

代码语言:javascript
复制
常用选项
crontab -e [-u 用户名]  		'//编辑计划任务  e:edit,编辑,使用方式同Vim编辑器。'
crontab -l [-u 用户名] 		'//查看计划任务  l:list,列表'
crontab -r [-u 用户名]  		'//删除计划任务  r:remove,移除'

crontab -l 		'//查看当前用户的计划列表'
crontab -l -u lisi 		 '//查看lisi用户的计划任务'

crontab -e 		'//可以操作删除一条计划任务'
crontab -r 		'//删除用户所有的计划任务'

命令格式: 时间周期设置 + 任务内容设置

代码语言:javascript
复制
时间数值的特殊表示方法
*  表示该范围内的任意时间
,  表示间隔的多个不连续的时间点
-  表示一个连续的时间范围
/  指定间隔的时间频率
例如:
0 17 * * 1-5  		 '//表示周一到周五每天17:00'
30 8 * * 1,3,5 		'// 表示每周一,三,五的8点30分'
0 8-18/2 * * * 		'// 表示8点到18点之间每2小时'
0 * */3 * *  		'//表示每3天'

分钟字段应该填写一个具体的时间数值,不可是“*”,否则将会每一分钟都执行一次任务 实例

代码语言:javascript
复制
如:每天15:30将/home/中zhangsan目录复制到/opt/中
[root@localhost ~]# crontab -e		'//编辑计划任务'
进入编辑列表开始编辑,操作类似vim 编辑器
30 15 * * * /usr/bin/cp -r /home/zhangsan /opt/		'//在其中编辑好任务,wq保存退出'
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先我们了解一下程序和进程的关系:
  • 一、查看进程
    • 1、查看静态的进程统计信息(ps)
    • 2、查看静态的进程统计信息(top)
      • 3、pgrep命令(查询进程信息)
        • 4、pstree命令(查看进程树)
        • 二、控制进程
          • 1、进程的启动方式
            • (1)手工启动
            • (2)调度启动
            • (3)进程的前后台调度
            • (3)终止进程的运行
        • 三、at一次性任务设置
        • 四、 crontab周期性任务设置
          • 1、crontab的配置文件和目录
            • (1) /etc/crontab 全局配置文件
            • 2、/etc/cron.*/ 系统默认设置
            • 3、/var/spool/cron/用户名 用户定义的位置
          • 2、使用crontab命令管理用户的计划任务
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档