Linux例行性工作at,cron,进程管理

简介:

  Linux工作调度的种类:at,cron

两种工作调度的方式:

     一种是例行性的,就是每隔一定的周期要来办的事项(通过at实现);

一种是突发性的,就是这次做完以后就没有的那一种(通过cron实现)。

一、突发性的工作调度(at)

要使用单一工作调度,我们的Linux系统上面由atd来负责这个调度的服务,首先启动/etc/init.d/atd restart   

 可以设置一下开机时就启动这个服务,免得每次重新启动都得再来一次。 chkconfig atd on 

 at安全管理

    /etc/at.deny

    将不可以使用at的帐号写入其中,若未记录到这个文件当中的用户,就可以使用at

 at的参数使用

   at [-m -v -c -l -d]  TIME

  -m 当at的工作完成后,即使没有输出信息,以      email通知用户该工作已完成

   -l 相当于atq,列出所有用户的at任务

   -d 相当于atrm,去掉at的任务

   -v 可以用较明显的时间格式列出at调度中的工作

   -c 列出后面接的该项工作的实际命令内容

TIME:时间格式,这里可以定义什么时候要进行at这项工作时间,格式有:

    HH:MM     ex>04:00

    HH:MM YYYY-MM-DD  ex>04:00 2012-04-01

    HH:MM[am|pm]  [Month]  [Date]   ex>04:00 March 17

    HH:MM[am|pm]  +number [minutes|hours|days|weeks]

    ex>now +5 minutes  就是说,在现在在加5minutes后进行该工作调度。

    编写例行性工作时应注意:

    使用命令时尽量用绝对路径,

    用Ctrl+d 结束编写。

at工作的管理

 at并不像cron那样,可以用crontab -e来编辑自己的工作调度,

当我们发现命令输入错误,就目前来讲,只能删除它。

(因为at的存放文件并不像crontab,at命令的存放文件为二进制文件[/var/spool/at/,对应的工作调度执行过后,则其二进制文件也就消失了],可用od查看,从简单使用的角度来讲,若命令错了,直接删除(atrm)重建)

  atq 查询目前主机上面有多少的at工作调度;

  atrm 后加工作序列号,删除该工作任务。

二、例行性的工作调度(cron)

   cron安全管理

   /etc/cron.deny

   将不可以使用crontab的帐号写入其中,若未记录到这个文件当中的用户,就可以使用crontab.

  crontab的参数使用

  -u -e -l -r

  -u 只有root才能进行这个任务,也即帮其他用户新建  、删除crontab工作高度;

  -e 编辑crontab的工作内容;

  -l 查阅crontab的工作内容;

  -r 删除所有的crontab的工作内容,若仅要删除一项  ,请用-e去编辑。

范例:用root的身份在每天的12:00发信给自己

crontab -e

#此时进入vi的编辑器界面。

 0  12  *  *  *  mail root -s "at 12:00" </root/.bashrc

#分 时  日 月 周 |<-------------命令串------------------>|

默认情况下,任何用户只要不被列入/etc/cron.deny当中,那么他就可以直接执行“crontab -e”去编辑自己的例行性命令了。当用户使用crontab这个命令来新建工作调度之后,该项工作就会被记录到/vart/spool/cron里面去了,而且是以帐号来作为判别的。

crontab命令的特殊字符:

  *   代表任何时刻都接受的意思

  ,    代表分隔时段的意思,举例:要执行工作3:00和6:00时,就是 0 3,6  *  *  * cdommand

  -    代表一段时间范围内,

  /n    即是第隔n单位间隔的意思

举例:*/5 * * * * command  即是每隔5分钟执行一次这个命令

 可能有时处于停机状态时,crontab命令就不能执行,这时就需要anacron来可唤醒停机期间的工作任务

  anacron 以天为单位或者在开机后立刻进行anacron的操作,它会去检测停机期间应该进行但是并没有进行的crontab任务,并将该任务执行一遍,然后anacron就会自动停止了。

   由于/etc/cron.daily内的任务比较多,因此我们使用每天进行的任务来解释一下anacron的运行情况好了。anacron若执行“anacron -scron.daily”时,它会这样运行的:

    1.由/etc/anacrontab分析到cron.daily这项工作名称的天数为1天;

    2.由/var/spool/anacron/cron.daily取出最近一次执行anacron的时间戳;

    3.由上个步骤与目前的时间比较,若差异天数为1天以上(含1天),就准备进行命令;

    4.若准备进行命令,根据/etc/anacrontab的设置将延迟65分钟;

    5.延迟时间过后,开始执行后续命令,即“run-parts /etc/cron.daily"这个命令;

    6.执行完毕后,anacron程序结束。

   现在你知道为什么隔了一阵子才将linux开机时,开机过后约1小时左右系统会有一小时段的忙碌,而且硬盘会跑个不停!那是因为anacron正在执行过去crontab未执行的各项工作调度。

  进程管理:

   jobs  -l

注:其实+代表最近被放到后台的工作号码,-代表最近最后第二个被放置到后台中的工作号码。而超过最后第三个以后的工作,就不会有+、-符号存在了!

工作状态是stopped,若工作状态为done,说明已经结束了,即便是最近没有+号,当你在执行一次jobs,就已经看不到该工作了。

  进程的执行顺序  

  priority与nice 

 

   PRI 值越低代表越优先,这个PRI的值是由内核动态调整的,用户无法直接调整PRI值,

   可通过Nice值,

   PRI(new)=PRI(old)+nice

  nice值可以调整的范围为-20—19;(root)

     普通用户调整的范围为0—19

  nice 是对即将执行的命令

   #用root给一个nice值为-5,用于执行vi,并查看该进程!

   [root@www ~]nice -n -5  vi  &

  renice  是对正在执行的执行

   renice [number] PID

   [root@www ~]renice 10  18625

 

  kill -signal PID

  可以帮我们将这个signal传送给某个工作(%jobnumber)或者是某个PID(直接输入数字。要再次强调的是:kill后面直接加数字与加上%jobnumber的情况是不同的!这个很重要。因为工作控制中有1号工作,但是PID1号则是专指“init”这个进程。你怎么可以将init关闭呢?关闭init,你的系统就死掉了啊!所以记得那个%是专门用在工作控制的。

     举例:如下图:用vim在后台运行,用jobs查看,并想通过kill 1来删除该工作号,发现并不能成功,会弹出说是不允许的操作,因为kill 1并不是杀掉1号工作,而是关闭init,即系统的主进程,当然是不允许的了。

应该用kill %1,就能正确关闭1号工作了。

 killall -signal   命令名称

  由于kill后面必须要加上PID(或者是jobnumer),所以,通常kill都会配合ps,pstre等命令,因为我们必须要找到相对应的那个进程的ID。但是,如此一来,很麻烦,可以直接用killall 其后直接跟命令名称,

    killall -1 httpd  可以让PID重新读取自己的配置文件,类似重新启动httpd服务

    也可以用 pkill  -1  httpd

  killall -9 httpd  强制终止所有以httpd启动的进程;

  killall -i  bash  依次询问每一个bash进程是否需要被终止进行。

 总之,要删除某个进程,我们可以使用PID或者启动该进程的命令名称,而如果要删除某个服务呢,最简单的方法就是利用killall,因为它可以将系统当中所有以某个命令名称启动的进程全部删除。

 


本文转自 刘园  51CTO博客,原文链接:http://blog.51cto.com/colynn/1011482


相关文章
|
2月前
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
22天前
|
并行计算 Linux
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
131 67
|
1月前
|
存储 Linux 调度
【Linux】进程概念和进程状态
本文详细介绍了Linux系统中进程的核心概念与管理机制。从进程的定义出发,阐述了其作为操作系统资源管理的基本单位的重要性,并深入解析了task_struct结构体的内容及其在进程管理中的作用。同时,文章讲解了进程的基本操作(如获取PID、查看进程信息等)、父进程与子进程的关系(重点分析fork函数)、以及进程的三种主要状态(运行、阻塞、挂起)。此外,还探讨了Linux特有的进程状态表示和孤儿进程的处理方式。通过学习这些内容,读者可以更好地理解Linux进程的运行原理并优化系统性能。
59 4
|
2月前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
125 34
|
1月前
|
Linux
Linux:守护进程(进程组、会话和守护进程)
守护进程在 Linux 系统中扮演着重要角色,通过后台执行关键任务和服务,确保系统的稳定运行。理解进程组和会话的概念,是正确创建和管理守护进程的基础。使用现代的 `systemd` 或传统的 `init.d` 方法,可以有效地管理守护进程,提升系统的可靠性和可维护性。希望本文能帮助读者深入理解并掌握 Linux 守护进程的相关知识。
73 7
|
1月前
|
Linux Shell
Linux 进程前台后台切换与作业控制
进程前台/后台切换及作业控制简介: 在 Shell 中,启动的程序默认为前台进程,会占用终端直到执行完毕。例如,执行 `./shella.sh` 时,终端会被占用。为避免不便,可将命令放到后台运行,如 `./shella.sh &`,此时终端命令行立即返回,可继续输入其他命令。 常用作业控制命令: - `fg %1`:将后台作业切换到前台。 - `Ctrl + Z`:暂停前台作业并放到后台。 - `bg %1`:让暂停的后台作业继续执行。 - `kill %1`:终止后台作业。 优先级调整:
97 5
|
1月前
|
Linux 应用服务中间件 nginx
Linux 进程管理基础
Linux 进程是操作系统中运行程序的实例,彼此隔离以确保安全性和稳定性。常用命令查看和管理进程:`ps` 显示当前终端会话相关进程;`ps aux` 和 `ps -ef` 显示所有进程信息;`ps -u username` 查看特定用户进程;`ps -e | grep &lt;进程名&gt;` 查找特定进程;`ps -p &lt;PID&gt;` 查看指定 PID 的进程详情。终止进程可用 `kill &lt;PID&gt;` 或 `pkill &lt;进程名&gt;`,强制终止加 `-9` 选项。
40 3
|
2月前
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
82 16
|
3月前
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
271 20
|
4月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
197 13

热门文章

最新文章

下一篇
oss创建bucket