linux命令小结
Posted jiangxiaoge1023
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux命令小结相关的知识,希望对你有一定的参考价值。
1、定时执行任务(1)Linux具有定时执行某些指定程序的功能,命令是at,用法为:
命令格式:at <时间>↙
这里<时间>可以使用标准时间格式串。
例1,
设定在当天12:30将/root/abc文件以电子邮件方式向用户h1、h2发送。可以输入:
at 12:30↙
此时光标停在下一行,可以开始输入要定时执行的命令:
cat /root/abc|mail –s “file abc”h1 h2↙
如果还有其他命令,还可继续输入,最后以<ctrl>+d结束。
系统回应:
Job 35 will be excuted using /bin/sh
“35”是对应作业号,此处表示用户所提交的定时执行作业已被接纳,系统会在指定时间以/bin/sh为shell执行该命令。
(2)查看当前系统内准备定时执行作业的情况,可用:
命令格式:at -l↙
Date:表示该项作业将被执行的时间。
Owner:表示该项作业的拥有者。
Queue:该作业所属的队列号,队列号一般用单个字母表示,字母越靠后,运行优先级也越高,缺省为c。可在at命令中使用可选项“-c <队列号>”指定。
Job#:该项作用对应的作业号。
(3)删除正待执行的一项作业,可用:
命令格式:at -r <作业号>↙
在某些发布版中,命令atq起着与at –l相同的作用,atrm起着与at –r相同的作用。
(4)另外,我们也可以将一批需要定时执行的命令放入一个shell过程文本中由at命令定时执行,具体用法是:
命令格式:at <时间> -f <shell过程文件名称>↙
有时,我们希望作业能在系统负载较轻时自动运行,而不是呆板地指明一个具体时间。
此时可用命令batch取代上述的at。用法与at类似,用户输入:
命令格式:batch↙
然后输入要执行的命令,最后以<Ctrl>+d结束,系统的回应与at类似。用户也可用at –l列出该作业。同样,可用at –r命令删除batch所制订的作业。
(*注意:在Date栏下显示的时间为作业提交的时间,而其队列默认为E。)
以batch方式执行的作业,其结果一般以E-mail方式传给用户。用户可查看自己的邮箱。
使用-f可选项,可使batch定时执行一个shell过程文件。
2、crondtab文件形式执行定时任务
定时执行要以守护程序crond为基础。该程序在系统启动时被执行,平时处于睡眠状态,通常每分钟“醒”来一次,检查作业队列中是否有命令要运行,
从而实现定时执行。我们除可使用at在某一时刻运行作业以外,还可利用crontab文件实现周期性的定时执行,例如:
(1)每日下午17:30作文件备份。
(2)每个周末正午12:00向一指定用户发电子邮件。
(3)每月30日自动删除某些日志文件。
这些工作使用at或batch命令都难以实现。
通常每个用户都可建一个crontab文件存放在目录/usr/spool/cron/crontabs(不同系统会有所不同)下,用户可用文本编辑器编写这个文件,例如:
vi mycrontab↙
文件的格式为:
每行包括一个<时间域>和<命令>,表示<命令>在指定的时间将被执行,而<时间域>则被空格或制表符分为5栏,分别为:
分钟 小时 日 月 星期
例如:
0,20,40 * * * 1-5 ls –l
表示从周一到周五,每隔20分钟(实际上是每小时的正点、20分、40分)执行一次ls–l命令,
“*”表示“任何有效值”,同一栏中如果要指定多个值,则用“,”分隔。
例如:每周周五在下午17:30以电子邮件方式向用户h1发送/root/abc文件。可在上述mycrontab文件中加入一行:
30 17 * * 5 cat /root/abc|mail –s“file abc” h1
上述建立的mycrontab文件需要运行以下命令安装:
crontab mycrontab↙
则该文件被复制到/usr/spool/cron/crontabs目录下,文件名称改为<用户账号>。
例如:用户是用root注册,则该文件名称就是root。也可以指定使用该定时文件的用户,方法是:
crontab <定时文件名称> [-u <用户账号>]↙
要删除一个用户的定时文件,可用:
crontab -d [<用户账号>]↙
注意:在某些系统中,通常还会有一个叫cron.allow的文件,用于控制有哪些用户能使用crontab定时执行,
用户要使用上述功能,应首先编辑此文件进行设定。以这种方式定时执行的作业,其输出结果如果没有被重定向,
一般以邮件方式送还作业的提交者。
问题1:can't open /var/run/atd.pid ,因为服务没有开启。
/etc/init.d/atd status //查看atd定时任务服务的状态
/etc/init.d/atd start //启动atd定时任务服务
问题2:普通用户at一个定时任务,at -l查不到?
3、查询正在运行服务ID,名字为ManagerServer_wls1:
kill -9 `ps -ef | grep -v grep | grep ManagerServer_wls1 | awk 'print $2'`
以上是关于linux命令小结的主要内容,如果未能解决你的问题,请参考以下文章