⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 进程管理及作业控制.htm

📁 有关于linux 学习的书籍
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<br>
<br>这样一来,at命令将使用文件中的命令序列,屏幕显示如下: 
<br>
<br>Warning:command will be executed using /bin/sh. 
<br>
<br>job 2 at 1999-12-25 02:00 
<br>
<br>当然也可以采用以下命令: 
<br>
<br>$ at&lt; /tmp/printjob 2:00 12/25/99 
<br>
<br>来完成同样的任务。也就是使用输入重定向的办法将文件定向为命令输入。 
<br>
<br>batch命令 
<br>
<br>batch 用低优先级运行作业,该命令几乎和at命令的功能完全相同,唯一的区别在于,at命令是在指定时间,很精确的时刻执行指定命令;而batch却是在系统负载较低,资源比较空闲的时候执行命令。该命令适合于执行占用资源较多的命令。 
<br>
<br>batch命令的语法格式也和at命令十分相似,即 
<br>
<br>batch [-V] [-q 队列] [-f 文件名] [-mv] [时间] 
<br>
<br>具体的参数解释请参考at命令。一般地说,不用为batch命令指定时间参数,因为batch本身的特点就是由系统决定执行任务的时间,如果用户再指定一个时间,就失去了本来的意义。 
<br>
<br>[例6] 使用例4,键入: 
<br>
<br>$ batch 
<br>
<br>at&gt; find / -name *.txt|lpr 
<br>
<br>at&gt; echo “foxy:All texts have been printed.You can take them over.Good day!River” |mail -s ”job done” foxy 
<br>
<br>现在这个命令就会在合适的时间进行了,进行完后会发回一个信息。 
<br>
<br>仍然使用&lt;Ctrl+d&gt;组合键来结束命令输入。而且batch和at命令都将自动转入后台,所以启动的时候也不需要加上&amp;符号。 
<br>
<br>cron命令 
<br>
<br>前面介绍的两条命令都会在一定时间内完成一定任务,但是要注意它们都只能执行一次。也就是说,当指定了运行命令后,系统在指定时间完成任务,一切就结束了。但是在很多时候需要不断重复一些命令,比如:某公司每周一自动向员工报告头一周公司的活动情况,这时候就需要使用cron命令来完成任务了。 
<br>
<br>实际上,cron命令是不应该手工启动的。cron命令在系统启动时就由一个shell脚本自动启动,进入后台(所以不需要使用&amp;符号)。一般的用户没有运行该命令的权限,虽然超级用户可以手工启动cron,不过还是建议将其放到shell脚本中由系统自行启动。 
<br>
<br>首先cron命令会搜索/var/spool/cron目录,寻找以/etc/passwd文件中的用户名命名的crontab文件,被找到的这种文件将载入内存。例如一个用户名为foxy的用户,它所对应的crontab文件就应该是/var/spool/cron/foxy。也就是说,以该用户命名的 crontab文件存放在/var/spool/cron目录下面。cron命令还将搜索/etc/crontab文件,这个文件是用不同的格式写成的。 
<br>
<br>cron启动以后,它将首先检查是否有用户设置了crontab文件,如果没有就转入“休眠”状态,释放系统资源。所以该后台进程占用资源极少。它每分钟 “醒”过来一次,查看当前是否有需要运行的命令。命令执行结束后,任何输出都将作为邮件发送给crontab的所有者,或者是/etc/crontab文件中MAILTO环境变量中指定的用户。 
<br>
<br>上面简单介绍了一些cron的工作原理,但是cron命令的执行不需要用户干涉;需要用户修改的是crontab中要执行的命令序列,所以下面介绍crontab命令。 
<br>
<br>crontab命令 
<br>
<br>crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。也就是说,用户把需要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件。下面就来看看如何创建一个crontab文件。 
<br>
<br>在/var/spool/cron下的crontab文件不可以直接创建或者直接修改。crontab文件是通过crontab命令得到的。现在假设有个用户名为foxy,需要创建自己的一个crontab文件。首先可以使用任何文本编辑器建立一个新文件,然后向其中写入需要运行的命令和要定期执行的时间。 
<br>
<br>然后存盘退出。假设该文件为/tmp/test.cron。再后就是使用crontab命令来安装这个文件,使之成为该用户的crontab文件。键入: 
<br>
<br>crontab test.cron 
<br>
<br>这样一个crontab 文件就建立好了。可以转到/var/spool/cron目录下面查看,发现多了一个foxy文件。这个文件就是所需的crontab 文件。用more命令查看该文件的内容可以发现文件头有三行信息: 
<br>
<br>#DO NOT EDIT THIS FILE -edit the master and reinstall. 
<br>
<br>#(test.cron installed on Mon Feb 22 14:20:20 1999) 
<br>
<br>#(cron version --$Id:crontab.c,v 2.13 1994/01/17 03:20:37 vivie Exp $) 
<br>
<br>大概意思是: 
<br>
<br>#切勿编辑此文件——如果需要改变请编辑源文件然后重新安装。 
<br>
<br>#test.cron文件安装时间:14:20:20 02/22/1999 
<br>
<br>如果需要改变其中的命令内容时,还是需要重新编辑原来的文件,然后再使用crontab命令安装。 
<br>
<br>可以使用crontab命令的用户是有限制的。如果/etc/cron.allow文件存在,那么只有其中列出的用户才能使用该命令;如果该文件不存在但 cron.deny文件存在,那么只有未列在该文件中的用户才能使用crontab命令;如果两个文件都不存在,那就取决于一些参数的设置,可能是只允许超级用户使用该命令,也可能是所有用户都可以使用该命令。 
<br>
<br>crontab命令的语法格式如下: 
<br>
<br>crontab [-u user] file 
<br>
<br>crontab [-u user]{-l|-r|-e} 
<br>
<br>  
<br>
<br>第一种格式用于安装一个新的crontab 文件,安装来源就是file所指的文件,如果使用“-”符号作为文件名,那就意味着使用标准输入作为安装来源。 
<br>
<br>-u 如果使用该选项,也就是指定了是哪个具体用户的crontab 文件将被修改。如果不指定该选项,crontab 将默认是操作者本人的crontab ,也就是执行该crontab 命令的用户的crontab 文件将被修改。但是请注意,如果使用了su命令再使用crontab 命令很可能就会出现混乱的情况。所以如果是使用了su命令,最好使用-u选项来指定究竟是哪个用户的crontab文件。 
<br>
<br>-l 在标准输出上显示当前的crontab。 
<br>
<br>-r 删除当前的crontab文件。 
<br>
<br>-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。 
<br>
<br>[例7] 
<br>
<br># crontab -l #列出用户目前的crontab。 
<br>
<br>10 6 * * * date 
<br>
<br>0 */2 * * * date 
<br>
<br>0 23-7/2,8 * * * date 
<br>
<br># 
<br>
<br>在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下: 
<br>
<br>minute hour day-of-month month-of-year day-of-week commands 
<br>
<br>第一项是分钟,第二项是小时,第三项是一个月的第几天,第四项是一年的第几个月,第五项是一周的星期几,第六项是要执行的命令。这些项都不能为空,必须填入。如果用户不需要指定其中的几项,那么可以使用*代替。因为*是统配符,可以代替任何字符,所以就可以认为是任何时间,也就是该项被忽略了。在表4-1 中给出了每项的合法范围。 
<br>
<br>  
<br>
<br>表4-1 指定时间的合法范围 
<br>
<br>时间 
<br>
<br>合法值 
<br>
<br>minute 
<br>
<br>00-59 
<br>
<br>hour 
<br>
<br>00-23,其中00点就是晚上12点 
<br>
<br>day-of-month 
<br>
<br>01-31 
<br>
<br>month-of-year 
<br>
<br>01-12 
<br>
<br>day-of-week 
<br>
<br>0-6,其中周日是0 
<br>
<br>  
<br>
<br>这样用户就可以往crontab 文件中写入无限多的行以完成无限多的命令。命令域中可以写入所有可以在命令行写入的命令和符号,其他所有时间域都支持列举,也就是域中可以写入很多的时间值,只要满足这些时间值中的任何一个都执行命令,每两个时间值中间使用逗号分隔。 
<br>
<br>[例8] 
<br>
<br>5,15,25,35,45,55 16,17,18 * * * command 
<br>
<br>这就是表示任意天任意月,其实就是每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。 
<br>
<br>[例9] 在每周一,三,五的下午3:00系统进入维护状态,重新启动系统。那么在crontab 文件中就应该写入如下字段: 
<br>
<br>00 15 * * 1,3,5 shutdown -r +5 
<br>
<br>然后将该文件存盘为foxy.cron,再键入crontab foxy.cron安装该文件。 
<br>
<br>[例10] 每小时的10分,40分执行用户目录下的innd/bbslin这个指令: 
<br>
<br>10,40 * * * * innd/bbslink 
<br>
<br>[例11] 每小时的1分执行用户目录下的bin/account这个指令: 
<br>
<br>1 * * * * bin/account 
<br>
<br>[例12] 每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔): 
<br>
<br>20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire&gt;expire.1st) 
<br>
<br>[例13] 每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。 
<br>
<br>12,55 3 4-9 1,4 * /bin/rm -f expire.1st&gt;&gt;mm.txt 
<br>
<br>[例14] 我们来看一个超级用户的crontab文件: 
<br>
<br>#Run the ‘atrun’ program every minutes 
<br>
<br>#This runs anything that’s due to run from ‘at’.See man ‘at’ or ‘atrun’. 
<br>
<br>0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/lib/atrun 
<br>
<br>40 7 * * * updatedb 
<br>
<br>8,10,22,30,39,46,54,58 * * * * /bin/sync 
<br>
<br>进程的挂起及恢复命令bg、fg 
<br>
<br>作业控制允许将进程挂起并可以在需要时恢复进程的运行,被挂起的作业恢复后将从中止处开始继续运行。只要在键盘上按&lt;ctrl+z&gt;,即可挂起当前的前台作业。 
<br>
<br>[例15] 
<br>
<br>$ cat &gt; text.file 
<br>
<br>&lt;ctrl+z&gt; 
<br>
<br>[1] + stopped cat &gt; text.file 
<br>
<br>$ jobs 
<br>
<br>[1]+ stopped cat &gt; text.file 
<br>
<br>在键盘上按&lt;ctrl+z&gt;后,将挂起当前执行的命令cat。使用jobs命令可以显示shell的作业清单,包括具体的作业、作业号以及作业当前所处的状态。 
<br>
<br>恢复进程执行时,有两种选择:用fg命令将挂起的作业放回到前台执行;用bg命令将挂起的作业放到后台执行。 
<br>
<br>[例16]用户正在使用Emacs,突然需要查看系统进程情况。就首先使用&lt;Ctrl+z&gt;组合键将Emacs进程挂起,然后使用bg命令将其在后台启动,这样就得到了前台的操作控制权,接着键入“ps –x”查看进程情况。查看完毕后,使用fg命令将Emacs带回前台运行即可。其命令格式为: 
<br>
<br>&lt;Ctrl+z&gt; 
<br>
<br>$ bg emacs 
<br>
<br>$ ps –x 
<br>
<br>$ fg emacs 
<br>
<br>默认情况下,fg和bg命令对最近停止的作业进行操作。如果希望恢复其他作业的运行,可以在命令中指定要恢复作业的作业号来恢复该作业。例如: 
<br>
<br>$ fg 1 
<br>
<br>cat &gt; text.file 
<br>
<br>灵活使用上述命令,将给自己带来很大的方便。 
<br>
<br>          <br></p></td></tr></table></td>
     </tr>
     <tr>
        <td width="100%" bgcolor="#FFFFFD" height="20"><table border="0" cellpadding="0" cellspacing="0" width="100%">
             <tr>
              <td width="100%"><p align="right" class="9"><a href="常用配置.htm">上一页</a>  <a href="index.html">目录</a>  <a href="命令大集合.htm">下一页</a> </td>
             </tr>
            </table>
        </td>
     </tr>
   </table>
  </td>
 </tr>
</table>
</center></div>
<p align=center><font size=1>Made by an Unre<!--2005-1-20 9:46:03   -->gistered version of <a href=http://www.etextwizard.com target=_blank>eTextWizard</a> V 1.98</font></p></body>
</html>
<!-- Made by an Unregistered version of eTextWizard V 1.98-->
<!--本网页文件由电子书制作工具“电子文档处理器”未注册版本的Txt2Html功能自动生成 -->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -