Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26188298
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类:

2009-12-24 14:42:45

Shell学习专题之后台执行命令

[整理人:hkebao@126.com 整理时间:2009-12-24]

本专题讨论内容如下:

1、 设置crontab文件,并用它提交作业

2、 使用at命令提交作业

3、 在后台提交作业

4、 使用nohup命令提交作业

3.1 croncrontab

了解contab文件每个条目中各个域的意义和格式。

下面就是这些域:

1          分钟159

2          小时123

3          131

4          112

5          星期06

6          要运行的命令

下面是crontab的格式:

<>小时<><>星期<>要运行的命令

其中<>表示空格

在这些域中可以用横杠 来表示一个时间范围。例如希望星期一到星期五可以在星期一列1-5

还可以使用逗号”,” 例如你希望星期一和星期四运行某个作业可以用 1,4

还可以使用星号”*” 表示连续的时间段。如果你对某个时间的域没有特别的限定也应该在该域填入*

该文件的每一个条目必须含有五个时间域,而且每个域之间要用空格分隔。

注释是用:#来表示

示例:打开crontab –e  就可以写这些条目了!

Ex1. 表示每晚2130 运行这个脚本

30 21 * * * /apps/bin/cleanup.sh

Ex2. 下面表示每月11022 日的4:45 运行脚本

45 4  1,10,22 * * /apps/bin/backup.sh

记得:当使用这些命令的时候一定要提交绝对路径,就是要在shell脚本里面提供必要的路径与环境变量。除了自动的全局变量(shell里面是有全局变量)

3.1.3 crontab命令选项

命令的一般形式为:

Crontab [-u user] –e –l –r

其中:

-u    用户名

-e    编辑crontab文件

-l     列出crontab文件中内容

-r    删除crontab文件

 

PS:你需要编辑$HOME目录下的.profile文件,在其中添加这样的一行

EDITOR=vi;  export EDITOR  保存退出  这样就能够使用VI编辑器了!

3.2 at命令

允许用户向 cron守护进程提交作业,使其在稍后的时间运行。这里面的稍后时间可能是指10分钟以后,也可能是几天以后。如果你希望一个月或更长的时间以后运行最好还是用crontab文件。

根用户可以通过/etc 目录下的 at.allowat.deny文件来控制哪些用户可以使用at命令哪些用户不能使用。

At基本形式为:

At   [-f script] [-m –l -r] [time] [date]

其中:

-f     script  是所要提交的脚本或命令

-l     列出当前所有等待运行的作业。

-r    清除作业。为了清除作业就要提供相应的作业标识ID

-m   作业完成后给用户发邮件

Time  at命令的时间格式非常灵活 可以是H  hh.hhmm  hh:mm  h:m

Date              日期格式可以是月份或日期数。而且at 命令还能够识别诸如today tomorror这样的词

 

3.3 &命令

当在前台运行某个作业时,终端被该作业占据。而在后台不会占据终端。

能够使用&命令将作业放在后台执行。这个命令的一般形式为: 命令&

适合在后台做的事如:find、一些shell脚本!

提交这个作业之后就会有一个进程号能够直接kill掉这个进程号就能够监控这个进程了!

3.3.1 向后台提交命令

示例:

[root@slave2 etc]# find /etc -name "*.cnf" -print > find.dt 2>&1 &

[10] 24718                   出来这个进程号ID

然后输入任意键就会出来一个提示:

[10]   Done                    find /etc -name "*.cnf" -print >find.dt 2>&1

表示完成了这个命令了!

 

这个会启来一个后台进程。所以可以通过一些命令查看进程

ps x|grep 24718            能够获取一个进程号出来的!

 

杀死后台进程

命令形式:kill –signal [process_number]

 

3.4 nohup命令

这个命令能够在你退出账户之后继续运行相应的进程。Nohup就是不挂起的意思。其形式为:

Nohup    command &

 

总结:创建一个定时清理日志文件或完成其他特殊工作的脚本,这样只要提交一次就可以每天晚上运行,而且无需干预,只需要查看相应的脚本日志就可以了。让系统管理工作更加容易

阅读(727) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-12-26 11:32:39

开开心心地开始了我的LINUX学习之路了!

chinaunix网友2009-12-24 17:48:27

http://www.lanrentuku.com/js/shipin-297.html 找到JS的源码