管理程序与进程和计划任务

it2024-01-09  60

文章目录

前言一、程序与进程关系1.1 程序1.2 进程1.2.1 查看进程信息ps1.2.1.1 ps命令1.2.1.2 查看进程 1.2.2 查看进程信息top1.2.2.1 top命令 1.2.3 查看进程信息pgrep1.2.3.1 pgrep命令 1.2.4 查看进程信息pstree1.2.4.1 pstree命令 1.2.5 进程的启动方式1.2.5.1 手工启动1.2.5.2 调度启动 1.2.6 进程的前后台调度1.2.6.1 Ctrl+Z组合键1.2.6.2 jobs命令1.2.6.3 fg命令 1.2.7 终止进程的运行1.2.7.1 Ctrl+C组合键1.2.7.2 kill、killall命令 1.2.8 操作验证1.2.9 终止进程的运行2-21.2.9.1 pkill命令1.2.9.2 常用命令选项 二 计划任务管理2.1 at命令2.2 crontab命令2.2.1 按照预先设置的时间周期(分钟,小时,天....)重复执行用户指定的命令操作2.2.2 属于周期性计划任务2.2.3 主要设置文件 2.3 管理crontab计划任务2.3.1 编辑计划任务2.3.2 查看计划任务2.3.3 删除计划任务 2.4 crontab任务配置的格式2.4.1 命令格式2.4.2 时间周期说明2.4.3 时间数值的特殊表示方法 2.5 ntpdate2.5.1 ntpdate:时间同步 (针对设备时间不同步的现象)2.5.2 解决方法 总结


前言

通过之前的学习,了解了Linux系统的引导过程,以及如何控制系统服务,优化系统服务。但这仍然是远远不够的,本文就对如何掌握crontab 计划任务管理,学会查看管理进程进行了简单的讲解。


一、程序与进程关系

1.1 程序

1.保存在硬盘,光盘等介质中的可执行代码和数据 2.静态保存的代码

1.2 进程

1.在CPU及内存中运行的程序代码 2.动态执行的代码 3.父,子进程 4.每个程序可以创建一个或多个进程(多个依赖包程序)

1.2.1 查看进程信息ps

1.2.1.1 ps命令

查看静态的进程统计信息

[root@localhost~]#ps aux

1.2.1.2 查看进程

ps a 显示当前终端下的所有进程信息 u 显示以用户为主的格式显示进程信息 x 显示当前用户在所有终端下的进程信息 -e 显示系统内的所有进程信息 -l 使用长格式显示进程信息 -f 使用完整格式显示进程信息 例: ps aux ps -elf 二选一 ps aux | grep sshd ps aux 列出当前sshd用户在所有终端下进程信息

进程号使用CPU量使用内存量 命令 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 125500 4116 ? Ss 22:46 0:00 /usr/lib/systemd/systemd --switched-root --system -- root 2 0.0 0.0 0 0 ? S 22:46 0:00 [kthreadd]

1.2.2 查看进程信息top

1.2.2.1 top命令

查看动态的进程排名信息 [root@localhost~]#top 查看进程动态信息(动态更新) top 将CPU,内存排名比较高,占用比较高的排在前面,占用低的排在后面

1.2.3 查看进程信息pgrep

1.2.3.1 pgrep命令

根据特定条件查询进程PID信息

-l:显示进程号 -U;指定特定用户 -t:指定终端 查询进程信息 pgrep -l ”xxx” 输出进程名中包含xxx的进程及进程号(pid) -U aaa 输出由用户aaa运行的进程及进程号(pid) -t tty1 输出tty1终端上运行的进程及pid号

例如:

查看sshd的输出进程

pgrep -l "sshd"

查看root用户的进程

pgrep -U root

[root@client1 ~]# pgrep -U zjq 查看用户运行的进程及进程号,无反应,原因;没有启动过 [root@client1 ~]# su zjq 切换用户 [zjq@client1 root]$ su 密码: 输入密码,代表用户已登录 [root@client1 ~]# pgrep -U zjq 3844 3881 [root@client1 ~]# pgrep -l -U zjq 3844 bash 用户登录先加载shell 3881 su

pgrep -l -t pts/0

1.2.4 查看进程信息pstree

1.2.4.1 pstree命令

以树形结构列出进程信息

pstree -aup -a:显示完整信息 -u:列出对应用户名 -p:列出对应PID号 pstree -aup 把当前所有进程列出,并以父子形式显示

1.2.5 进程的启动方式

1.2.5.1 手工启动

前台启动:用户输入命令,直接执行程序(执行过程可见,删除,新建...)默认都是前台 后台启动:在命令行尾加入“&”符号 (执行过程不可见) [root@localhost ~]# cp /dev/cdrom mycd.iso & [1] 28454 输出信息中包括后台任务序号、PID号

1.2.5.2 调度启动

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

1.2.6 进程的前后台调度

1.2.6.1 Ctrl+Z组合键

将当前进程挂起,即调入后台并停止执行

1.2.6.2 jobs命令

查看处于后台的任务列表

1.2.6.3 fg命令

将后台进程恢复到前台运行,可指定任务序号

例如:

[root@localhost ~]# jobs -l [1]- Stopped cp /dev/cdrom mycd.iso [2]+ Stopped top [root@localhost ~]# fg 1 jobs -l 查看处于后台的任务列表 vim 1.txt 在定义1.txt时按Ctrl+Z 将其挂起并调入后台 fg 2 将后台进程2恢复到前台运行

1.2.7 终止进程的运行

1.2.7.1 Ctrl+C组合键

中断正在执行的命令

1.2.7.2 kill、killall命令

kill用于终止指定PID号的进程 killall用于终止指定名称的所有进程 -9选项用于强制终止

例如: jobs -l 查看处于后台的任务列表 kill 3645 杀死进程3645,无反应 kill -9 3645 强制杀死3645

vim 3.txt 在定义3.txt时按Ctrl+Z 将其挂起并调入后台 vim 5.txt 在定义5.txt时按Ctrl+Z 将其挂起并调入后台 jobs -l 查看处于后台的任务列表 killall -9 vim 强制杀死所有vim名称的进程

1.2.8 操作验证

yum -y install httpd 安装一个httpd 程序

服务启动 systemctl start httpd 显示当前终端下所有进程 ps aux | grep httpd 强制杀死指定名称httpd的所有进程 killall -9 httpd 查看处于后台的任务列表 jobs -l

1.2.9 终止进程的运行2-2

1.2.9.1 pkill命令

根据特定条件终止相应的进程

1.2.9.2 常用命令选项

-U: 根据进程所属的用户名终止相应进程 -t: 根据进程所在的终端终止相应进程

例如

[root@localhost ~]# pgrep -I -U "hackli" 确认进程 3045 bash [root@localhost ~]# pkill -9 -U "hackli" 强制删除进程 [root@localhost ~]# pgrep -l -U "hackli" 查看进程

二 计划任务管理

2.1 at命令

一次性计划任务

at [HH:MM] [yyyy-mm-dd] 时 分 年 月 日

例如: 1.

[root@localhost ~]# date 获取当前的时间 Sun May 7 10:33:13 EDT 2017 [root@localhost ~]# at 10:35 2017-05-07 at> pgrep -U root | wc -I > /tmp/ps.root pgrep:查看进程信息 -U:指定特定用户 wc:统计 -l:统计行数 at> <EOT> 按CtrI+D键提交任务 job 1 at Sun May 7 10:35:002017 [root@localhost ~]# cat /tmp/ps.root

2.在当天的21:30时自动关闭当前系统

[root@localhost ~]# at 21:30 at> shutdown -h now 自动关闭 at> <EOT> job 2 at Sun May 7 21:30:00 2017 [ropt@localhost ~]# atq 查看未执行的任务列表 2 ) Sun May 7 21:30:00 2017 a root [root@localhost ~]# atrm 2 删除第2条任务 [root@localhost ~]# atq [root@client1 ~]# at 14:20 2020-10-20 at> touch /root/a1.txt 创建文件 at> mkdir /root/aaa 创建目录 at> reboot 重启 at> <EOT> job 3 at Tue Oct 20 14:20:00 2020 [root@client1 ~]# ls -lh 查看

[root@client1 ~]# date 查看当前日期 20201020日 星期二 14:23:55 CST [root@client1 ~]# at 15:29 2020-10-20 at> touch /root/az.txt 创建文件 at> mkdir /root/ab 创建目录 at> reboot 重启 at> <EOT> job 8 at Tue Oct 20 15:29:00 2020 [root@client1 ~]# atq 查看未执行的任务进程 8 Tue Oct 20 15:29:00 2020 a root [root@client1 ~]# atrm 8 删除第8条任务 [root@client1 ~]# atq

2.2 crontab命令

root用户可以查看其它用户设置的任务计划,其它用户没有权限查看root用户设置的任务计划

2.2.1 按照预先设置的时间周期(分钟,小时,天…)重复执行用户指定的命令操作

2.2.2 属于周期性计划任务

2.2.3 主要设置文件

全局配置文件,位于文件:/etc/crontab 系统默认的设置,位于目录:/etc/cron.*/ 用户定义的设置,位于文件:/var/spool/cron/用户名 vi /etc/crontab 定义文件 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin 环境变量 MAILTO=root 文件发送目标

cd /etc/cron.*/

cd /var/spool/cron/

2.3 管理crontab计划任务

2.3.1 编辑计划任务

crontab -e [-u 用户名]

2.3.2 查看计划任务

crontab -l [-u 用户名]

2.3.3 删除计划任务

crontab -r [-u 用户名]

root用户可以查看,删除其他用户的任务计划 -u :指定用户

2.4 crontab任务配置的格式

2.4.1 命令格式

时间周期设置 任务内容设置 50 3 2 1 * run_command 分钟 小时 日期 月份 星期 命令

2.4.2 时间周期说明

字段 说明 分钟 取值为从0到59之间的任意整数 小时 取值为从0到23之间的任意整数 日期 取值为从1到31之间的任意整数 月份 取值为从1到12之间的任意整数 星期 取值为从0到7之间的任意整数,0或7代表星期日 命令 要执行的命令或程序脚本(绝对路径,使用which)

2.4.3 时间数值的特殊表示方法

* :表示该范围的任意时间 ,:表示间隔的多个不连续时间点 - :表示一个连续的时间范围 / :表示间隔的时间频率

例如:

0 17 * * 1-5 周一到周五每天17:00 30 8 * * 1,3,5 每周一,三,五的8点30分 0 8-18/2 * * * 8点到18点之间每2小时 0 * */3 * * 每3天 which touch 查看绝对路径 date 查看当前时间 crontab -e 编辑任务计划 09 16 * * * /usr/bin/touch ky07 在16:09创建一个文件叫ky07 crontab -l 查看计划任务

su zjq 切换用户 crontab -e 编辑计划任务 * * * * * /usr/bin/touch zjq crontab -l 查看计划任务 crontab -l -u root 指定查看root的交换任务 must be privileged to use -u 没有权限 su root 切换到root用户 密码: 输入密码 crontab -l -u zjq 查看用户zjq的计划任务 crontab -r -u zjq 删除用户zjq的计划任务 crontab -l -u zjq 查看用户zjq的计划任务 no crontab for zjq 查询不到用户zjq的计划任务

2.5 ntpdate

2.5.1 ntpdate:时间同步 (针对设备时间不同步的现象)

2.5.2 解决方法

date 获取当前日期 ntpdate ntp.aliyun.com 与阿里的服务器域名时间同步 20 Oct 16:28:12 ntpdate[3608]: step time server 203.107.6.88 offset 2.725085 sec which ntpdate 查看ntpdate的绝对路径 /usr/sbin/ntpdate crontab -e 编辑计划任务 */30 * * * * /usr/sbin/ntpdate ntp.aliyun.com 每30分钟 与阿里的服务器域名时间同步 30 * * * * :意思是30分钟为限(例如:1:30,2:30...)进行操作

总结

通过以上知识命令的理论,命令的讲解,总体可以理解进程与计划任务管理的基础结构。

最新回复(0)