linux命令大全_第1页
linux命令大全_第2页
linux命令大全_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux 中后台执行任务及通配符2008-05-12 10:431、cron 和 crontabcron 是系统主要的调度进程,可以在无需人工干预的状况下运行作业。crontab 命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab 文件来保存调度信息。可以使用它运行任意一个 shell 脚本或某个命令,每小时运行一次,或一周三次,这完全取决于你。每一个用户都可以有自己的crontab 文件,但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。系统管理员是通过 cron.deny 和 cron.allow 这两个文件来禁止或允许用户拥

2、有自己的 crontab 文件。crontab 的域为了能够在特定的时间运行作业,需要了解 crontab 文件每个条目中各个域的意义和格式。下面就是这些域:第 1 列分钟 15 9第 2 列小时 12 3(0 表示半夜) 第 3 列日 13 1第 4 列月 11 2第 5 列星期 06(0 表示星期天) 第 6 列要运行的命令crontab 的格式:分 时 日 月星期要运行的命令crontab 文件的一个条目是从左边读起的,第一列是分,最终一列是要运行的命令,它位于星期的后面。可以用横杠-来表示一个时间范围,例如你期望星期一至星期五运行某个作业, 那么可以在星期域使用 1 - 5 来表示。还

3、可以在这些域中使用逗号“,”,例如你期望星期一和星期四运行某个作业, 只需要使用 1 , 4 来表示。可以用星号*来表示连续的时间段。假如你对某个表示时间的域没有特殊的限定, 也应当在该域填入*。该文件的每一个条目必需含有 5 个时间域,而且每个域之间要用空格分隔。该文件中全部的注释行要在行首用#来表示。crontab 命令的一般形式为crontab -u user -e -l r 其中:-u 用户名。-e 编辑 crontab 文件。-l 列出 crontab 文件中的内容。-r 删除 crontab 文件。假如使用自己的名字登录,就不用使用-u 选项,由于在执行 crontab 命令时,

4、该命令能够知道当前的用户。创建一个新的 crontab 文件创建一个名为<user>cron 的文件,其中<user>是用户名,例如,samcron。在该文件中加入如下的内容。$su sam$crontab samcron#(put your own initials here) echo the date to the console every #15 minutes between 6pm and 6am0,15,30,45 18-06 * * * /bin/echo ”date” > /dev/console在上面的例子中,系统将每隔 1 5 分钟向把握台

5、输出一次当前时间。假如系统崩溃或挂起,从最终所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用 t t y 1 来表示把握台,可以依据实际状况对上面的例子进行相应的修改。同时,新创建文件的一个副本已经被放在/ v a r / s p o o l / c r o n名目中,文件名就是用户名(即 sam)。列出 crontab 文件$su sam$ crontab l#(put your own initials here) echo the date to the console every #15 minutes between 6pm and 6am0,15,30,45 1

6、8-06 * * * /bin/echo ”date” > /dev/console你将会看到和上面类似的内容。可以使用这种方法在$home 名目中对 crontab 文件做一备份:$ crontab -l > $home/mycron这样,一旦不当心误删了 crontab 文件,可以用下一节所叙述的方法快速恢复。编辑 crontab 文件$ crontab e可以像使用 vi 编辑其他任何文件那样修改 crontab 文件并退出。假如修改了某些条目或添加了新的条目,那么在保存该文件时,cron 会对其进行必要的完整性检查。假如其中的某个域消灭了超出允许范围的值,它会提示你。删除

7、crontab 文件$ crontab r恢复丢失的 crontab 文件假如不当心误删了 crontab 文件,假设你在自己的$home 名目下还有一个备份, 那么可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名。假如由于权限问题无法完成拷贝,可以用:$ crontab <filename>其中,<filename>是你在$home 名目中副本的文件名。建议在自己的$ home 名目中保存一个该文件的副本。编辑副本,然后重新提交新的文件。有些 crontab 的变体有些怪异,所以在使用 cro

8、ntab 命令时要格外当心。假如遗漏了任何选项,crontab 可能会打开一个空文件,或者看起来像是个空文件。这时敲 delete 键退出,不要按<ctrl - d>,否则你将丢失 crontab 文件。crontab 文件例子:30 21* * * /apps/bin/cleanup.sh上面的例子表示每晚的 2 1 : 3 0 运行/apps/bin 名目下的 cleanup.sh。45 4 1,10,22 * * /apps/bin/backup.sh上面的例子表示每月 1、1 0、2 2 日的 4 : 4 5 运行/apps /bin 名目下的backup.sh。0,30

9、18-23 * * * /apps/bin/dbcheck.sh > /dev/null 2>&1上面的例子表示在每天 18:00 至 23:00 之间每隔 30 分钟运行/apps/bin 名目下的 dbcheck.sh, > /dev/null 命令把命令产生的输出扔进了垃圾堆“/dev/null“ 2>&1 是把标准错误(命令运行时产生的错误信息)扔进标准输出,也就时扔进了垃圾堆!。留意:当你写了一个脚本,在 shell 中手动执行没问题,但加入 cron 任务后确不能正常执行,很可能是 cron 的环境变量问题,你要在脚本中对命令使用确定路径。你

10、可能已经留意到上面的例子中,每个命令都给出了确定路径。当使用crontab 运行 shell 脚本时,要由用户来给出脚本的确定路径,设置相应的环境变量。记住,既然是用户向 cron 提交了这些作业,就要向 cron 供应所需的全部环境。不要假定 cron 知道所需要的特殊环境,它其实并不知道。所以你要保证在 shell 脚本中供应全部必要的路径和环境变量,除了一些自动设置的全局变量。假如 cron 不能运行相应的脚本,用户将会收到一个邮件说明其中的缘由。2、at 命令at 命令允许用户向 cron 守护进程提交作业,使其在稍后的时间运行。一旦一个作业被提交, at 命令将会保留全部当前的环境变

11、量,包括路径,不象 crontab, 只供应缺省的环境。该作业的全部输出都将以电子邮件的形式发送给用户,除非你对其输出进行了重定向,绝大多数状况下是重定向到某个文件中。和 crontab 一样,根用户可以通过/etc 名目下的 at.allow 和 at.deny 文件来把握哪些用户可以使用 at 命令,哪些用户不行。不过一般来说,对 at 命令的使用不如对 crontab 的使用限制那么严格。at 命令的基本形式为:at -f script -m -l -r time date选项:-f:script 是所要提交的脚本或命令。-l:列出当前全部等待运行的作业。atq 命令具有相同的作用。-r

12、:清除作业。为了清除某个作业,还要供应相应的作业标识(i d);有些u n i x 变体只接受 atrm 作为清除命令。-m:作业完成后给用户发邮件。time:at 命令的时间格式格外机敏;可以是 h hh、hhmm、hh:mm 或 h:m,其中 h 和 m 分别是小时和分钟。还可以使用 a.m.或 p.m.。date:日期格式可以是月份数或日期数,而且 at 命令还能够识别诸如 today、tomorrow 这样的词。使用 at 命令提交命令或脚本使用 at 命令提交作业有几种不同的形式,可以通过命令行方式,也可以使用at 命令提示符。一般来说在提交若干行的系统命令时,使用 at 命令提示符

13、方式, 在提交 shell 脚本时,使用命令行方式。命令行方式:at -f script -m -l -r time date提示符方式:以在 at 命令后面跟上日期/时间并回车。然后就进入了a t 命令提示符,这时只需逐条输入相应的命令,然后按<ctrl - d >退出。列出所提交的作业一个作业被提交后,可以使用 at -l 命令来列出全部的作业:$at-l12004-11-0210:40asam32004-11-0215:00asam42004-11-0119:07asam其中,第一行是作业标识,后面是作业运行的日期/时间。最终一列 a 代表 at。还可以使用 atq 命令来完

14、成同样的功能,它是 at 命令的一个链接。当提交一个作业后,它就被拷贝到/var/spool/at 名目中,预备在要求的时间运行。清除一个作业清除作业的命令格式为:atrm job no 或 at -r job no要清除某个作业,首先要执行at -l 命令,以猎取相应的作业标识,然后对该作业标识使用 at -r 命令,清除该作业。3、&命令当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。该命令的一般形式为: 命令&在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,由于这样你的机器就会在那里傻等。

15、不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。假如放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:command >out.file 2>&1 &在上面的例子中,2>&1 表示全部的标准输出和错误输出都将被重定向到一个叫做 out.file 的文件中。当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。杀死后台进程杀死后台进程可以使用 kill 命令。当一个进程被放到后台运行时, shell 会给出一个进程号,我们可以依据这个进程号,用 kill 命令杀死该进程。该命令的基本形

16、式为:kill -signal process_number现在暂且不要考虑其中的各种不同信号。在杀进程的时候,执行下面的命令(你的进程号可能会不同)并按回车键。系统将会给出相应的信息告知用户进程已经被杀死。$kill 7832假如系统没有给出任何信息,告知你进程已经被杀死,那么不妨等一会儿,或许系统正在杀该进程,假如还没有回应,就再执行另外一个 kill 命令,这次带上一个信号选项:$kill - 9 7868假如用上述方法提交了一个后台进程,那么在退出时该进程将会被终止。为了使后台进程能够在退出后连续运行,可以使用 nohup 命令。4、nohug 命令假如你正在运行一个进程,而且你觉得在

17、退出帐户时该进程还不会结束,那么可以使用 nohup 命令。该命令可以在你退出帐户之后连续运行相应的进程。nohup 就是不挂起的意思( no hang up)。该命令的一般形式为:nohup command &使用 nohup 命令提交作业假如使用 nohup 命令提交作业,那么在缺省状况下该作业的全部输出都被重定向到一个名为 nohup.out 的文件中,除非另外指定了输出文件:nohup command > myout.file 2>&1在上面的例子中,输出被重定向到 myout.file 文件中。后台运行作业:有时我们必需要对大文件进行大量更改,或执行一些简单的查找,这些工作最好能够在系统负荷较低时执行。创建一个定时清理日志文件或完成其他特殊工作的脚本,这样只要提交一次,就可以每天晚上运行,而且无需你干预,只要看看相应的脚本日志就可以了。cron 和其他工具可以使系统管理任务变得更轻松。5、*,?,.,!.匹配文件名中的任何字符串,包括空字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论