文章目录 首先我们了解一下程序和进程的关系: 一、查看进程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命令管理用户的计划任务
首先我们了解一下程序和进程的关系:
程序:
保存在 、光盘等介质中的可执行代码和数据静态保存的代码
进程:
在CPU及内存中运行的程序代码动态执行的代码
ps命令(查看静态的进程统计信息Processes Statistic)
是Linux系统中最为常用的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照,通过不同的命令选项,可以有选择性的查看进程信息
ps -aux(将以简单列表形式显示出进程信息):
下面来解释一下各字段含义
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(将以长格式显示系统中的进程信息):
[root@localhost 桌面]# ps -elfF S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD4 S root 1 0 0 80 0 - 4840 poll_s 16:29 ? 00:00:02 /sdyddy/init1 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]了解一下各字段含义
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系统中查看进程和计划任务管理
表中的信息表述含义如下:
当使用ps命令查询某个进程新的PID信息时,往往需要配合grep命令对输出结果进行过滤,但这样使用非常不方便,而pgrep命令则正是用来查询特定进程信息的专用工具,使用pgrep命令可以根据进程的名称、运行该进程的用户、进城所在的终端等多种属性查询特定进程的PID号。
-l:既显示PID也显示进程名-U:查看指定用户的进程,此处例如zhangsan 4、pstree命令(查看进程树)pstree命令可以输出Linux系统中各进程的树形结构,更加直观的判断出各进程之间的相互关系(父、子进程)。
常用选项:
前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入按&符号
使用at命令,是指一次性计划任务
使用crontab命令,设置周期性计划任务
1、Ctrl+Z组合键:
当Linux系统中的命令正在前台执行时,按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。
2、jobs命令:
需要查看当前终端中在后台运行的进程任务时,可以使用jobs命令,结合“-l”选项可以同时显示处该进程对应的PID号,在jobs命令的输出结果中,每一行记录对应一个后台进程的状态信息,首行的数字表示该进程在后台的任务编号。
3、fg命令:
将后台进程恢复到前台运行,可指定任务序号,示例如下:
1、Ctrl+C组合键
中断正在执行的命令
2、kill、killall命令(跟号码,具有唯一性)
常用选项:
pkill命令
1.根据特定条件终止相应的进程
2.常用选项:
如果此时我们想把chdxh用户踢出,使用Xshell界面登录的root账户下输入:pkill -9 -U zhangsan,敲回车,此时系统会自动跳回开机之后的用户登录界面,zhangsan用户的所有进程全部被终止
三、at一次性任务设置格式:at [HH:MM] [yyyy-mm-dd]
具体执行操作如下:
crontab(定时任务)
使用crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻重复性系统管理任务的操作
软件包cronie 提供crontab工具,系统服务crond和配置文件 /etc/crontab。
开启系统服务crond 是启动周期性任务的前提条件
crond通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件来配置
(1) /etc/crontab 全局配置文件全局配置文件
/etc/crontab 文件中设置的是维护Linux系统所需的任务
Linux系统及相关程序在安装时自动设置
不建议用户手动修改此文件
[root@localhost ~]# cat /etc/crontab'//查看系统任务配置文件'SHELL=/dyddy/bash'//设置执行计划任务的Shell环境'PATH=/sdyddy:/dyddy:/usr/sdyddy:/usr/dyddy'//定义可执行命令及程序的路径'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守护进程就可以使设置生效
[root@localhost ~]# ls -l /var/spool/cron/*ls: 无法访问/var/spool/cron/*: 没有那个文件或目录'//没有创建任务' 2、使用crontab命令管理用户的计划任务 常用选项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 '//删除用户所有的计划任务'命令格式: 时间周期设置 + 任务内容设置
分钟字段应该填写一个具体的时间数值,不可是“*”,否则将会每一分钟都执行一次任务
实例