进程任务计划

文章详细介绍了Linux系统中如何查看和控制进程,包括使用ps,top,pgrep等命令,以及如何启动、停止和结束进程。同时,文章也详细阐述了计划任务的管理,包括一次性任务工具at和周期性任务工具crontab的使用,以及如何通过crontab配置定时任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程和计划任务管理

进程查看和控制

查看进程

程序和进程的关系
程序
  • 保存在硬盘、光盘等介质中可执行代码和数据
  • 静态保存的代码
进程
  • 在cpu及内存中运行的程序代码
  • 动态执行的代码
  • 父、子进程

每个进程可以创建一个或者多个进程

查看静态进程命令
  • ps -elf
  • ps aux
查看动态进程的排名信息
  • top
查看进程信息
  • pgerp

例如查询root用户进程

pgrep -lu root

查询当前用户tty进程信息

pgrep -l -t tty

如果要查看张三用户运行的tty进程:

pgrep -l -U zhangsan -t tty

用树形结构查看进程
  • pstree -aup

控制进程

  • 手工启动
  • 前台启动;用户输入命令,直接执行程序
  • 后台启动:在命令行尾加入“&”
  • 调度启动
进程运行状态(前后台运行状态):

cp /dev/cdrom aa.iso & //将此命令过程调入后台执行

#jobs -l //查看后台程序及其编号
#fg 1 //将后台程序调入前台

cp /dev/cdrom aa.iso //此命令执行后可以按"Ctrl+z"将此操作调入后台并暂停

#bg 1 //将后台暂停的任务恢复启动

结束进程
  • kill 进程号
  • kill -9 进程号(强制结束进程)
#pgrep -l "sshd"		//查询sshd的PID
#ps aux | grep "sshd"		//更加详细的查看PID
#kill 2888			//将查询到的PID进行执行操作
#pgrep -l "sshd"		//再次查看时,没有信息
选项 -9		//强制杀死进程,
如:使用vim打开一个文件,使用Ctrl+z挂起后无法使用kill杀死,则需-9选项
3.killall		//使用进程名结束进程
killall -9 vim		//结束vim的所有进程

根据条件来结束进程
  • pkill 条件(用户、终端)

-U 指定用户

  • t 指定终端
pgrep -lu "zhangsan"		//查看张三所开启的进程

pkill -9 -U "zhangsan"		//强制结束用户张三所有进程

pkill -9 -t tty1


计划任务管理

at一次性任务设置

一次性计划任务(和Windows任务计划程序一样)

#date		//查看时间
#date -s 20170320 	//修改系统日期(防止和具体时间不一致)
#date -s 08:20		//修改系统时间

yum install -y at

systemctl start atd	//启动该程序

systemctl enable atd

at 08:20 2017-03-20 (你希望在什么时候执行)

at> mkdir 123		//输入完成后Ctrl+d提交(希望执行的操作)
at> <EOT>	

atq			//任务还未执行时查看状态。

atq

2       Thu Dec 12 12:12:00 2019 a root
3       Thu Dec  5 12:13:00 2019 a root

at -c 3		//查询第三个任务详细任务信息

#atrm 3			//查看编号后可以删除此任务

crontab 周期性任务设置

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

属于周期性计划任务

主要设置文件

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

系统默认的位置,位于:/ect/cron.*/

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

管理cron计划任务

编辑计划任务(可以查看编辑,也可以删除)

crontab -e [-u 用户]

查看计划任务

crontab -l [-u 用户]

删除计划任务

crontab -r [-u 用户]

crontab任务配置格式

在这里插入图片描述

时间数值的特殊表示方法

*表该范围内任意时间

,表示间隔的多个不连续时间点

-表示一个连续的时间范围

/指定间隔的时间频率

示例:

  • 0 17 * * 1-5 周一到周五每天17:00
  • 30 8 * * 1,3,5 每周一、三、五的8:30分
  • 0 8-18/2 * * * 8点到18点之间每2小时
  • 0 * */3 * * 每3天
示例1

每周五、每周六的下午3点整备份

需求:将/root/abc目录每天5点10分备份至/home下:

systemctl start crond

systemctl enable crond

vim /root/a.sh

#!/bin/bash
tar zcf /home/http_back_`date +%F_%T`.tar.gz /root/abc &> /dev/null
保存退出

crontab -e 

10 17 * * 1-7 /bin/bash /root/a.sh
保存退出
示例2

每天早上7:50自动开启sshd服务,22点50时关闭
每隔5天清空一次FTP服务器公共目录/var/ftp/pub
每周六的7:30时,重新启动httpd服务
每周一、三、五的17:30时,打包备份/etc/httpd目录
每月1日与周一到周五的23点重启web服务

[root@localhost root]# crontab -e
50  7   * * *   /sbin/service  sshd  start
50  22 * * *   /sbin/service  sshd  stop
0    0   */5 * *   /bin/rm -rf /var/ftp/pub/*
30  7   * * 6   /sbin/service  httpd  restart
30 17 * * 1,3,5   /bin/tar  jcf  httpdconf.tar.bz2  /etc/httpd/
0 23  1   *  1-5   /sbin/service  httpd  restart

date 用法

date 显示或者设定系统日期时间

date -d 时间 显示输入的时间

date -s 日期时间 设置日期时间

时间格式(时分秒)支持的符号标记有:
符号符号说明
%印出 %
%n下一行
%t跳格
%H小时(00…23)
%I小时(01…12)
%k小时(0…23)
%l小时(1…12)
%M分钟(00…59)
%p显示本地 AM 或 PM
%r直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%R24小时制方式显示时间,相当于%H:%M
%s从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S秒(00…60)
%T直接显示时间 (24 小时制)
%X相当于 %H:%M:%S
%z数字方式显示时区
%Z字母缩写方式显示时区
支持的日期格式符号标记
%a星期几 ,缩写(Sun…Sat)
%A星期几 ,完整英文星期(Sunday…Saturday)
%b月份 (Jan…Dec)
%B月份 (January…December)
%c直接显示日期与时间
%d日 (01…31)
%D直接显示日期 (mm/dd/yy)
%e一个月中的第几天,类似%d
%F完整的日期,相当于%Y-%m-%d
%h同 %b
%j一年中的第几天 (001…366)
%m月份 (01…12)
%u一周中的第几天 (1…7) (1是星期一)
%U一年中的第几周 (00…53) (以 Sunday 为一周的第一天的情形)
%w一周中的第几天 (0…6)(0是星期天)
%W一年中的第几周 (00…53) (以 Monday 为一周的第一天的情形)
%x直接显示日期 (mm/dd/yy)
%y年份的最后两位数字 (00.99)
%Y完整年份 (0000…9999)

显示完整的当前年月日,具体时间

[root@123 ~]# date +%Y年%m月%d日-%T
2022年12月05日-11:21:41

显示前一天日期 和后一天日期

*# 显示前一天的日期* 
date -d "1 days ago" 
*# 显示后一天的日期* 
date -d "-1 days ago"

设置系统时间

# 语法

 date -s 字符串时间 

*# 示例* 

date -s "2017-09-15 20:15:35"


例如

每周五下午三点备份

需求:将/root/abc目录每天5点10分备份至/home下:

systemctl start crond

systemctl enable crond

vim /root/a.sh

#!/bin/bash
tar zcf /home/http_back_`date +%F_%T`.tar.gz /root/abc &> /dev/null
保存退出

crontab -e 

10 15 * * 1-7 /bin/bash /root/a.sh
保存退出

思考;

打包时每周更新,打包的文件名一样原来的被覆盖,看不到之前文件,如何设置

打包时设置当前时间命名

例如

tar zcf abcdate +%F-%T.tar.gz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值