#
你可以看到指令
执
行的目
录
(/root)
,
还
有多
个环
境
变
量与
实际
的指令
内
容啦!
范例三:由于机房
预计
于
2015/08/05
停
电
,我想要在
2015/08/04 23:00
关
机?
[root@study ~]#
at 23:00 2015
-
08
-
04
at>
/bin/sync
at>
/bin/sync
at>
/sbin/shutdown
-
h now
at> <EOT>
job 3 at Tue Aug 4 23:00:00 2015
#
您瞧瞧!
at
还
可以在一
个
工作
内输
入多
个
指令呢!不
错
吧!
事实上,当我们使用
at
时会½入一个
at shell
的环境来让用户下达工作指令,此时,
½议你最好使
用绝对路径来下达你的指令,比½不会有问题喔
!由于指令的下达与
PATH
变量有关,
同时与当
时的工作目录也有关连
(
如果有牵涉到文件的话
)
,因此使用绝对路径来下达指令,会是比½一劳永
逸的方法。
为什么呢?举例来说,你在
/tmp
下达『
at now
』然后输入『
mail -s "test" root < .bashrc
』,
问一下,那个
.bashrc
的文件会是在哪里?答案是『
/tmp/.bashrc
』!因为
at
在运作时,会跑到当
时下达
at
指令的那个工作目录
的缘故啊!
有些朋友会希望『我要在某某时刻,在我的终端机显示出
Hello
的字样』,然后就在
at
里面下达这
样的信息『
echo "Hello"
』。等到时间到了,却发现没有任何讯息在屏幕上显示,这是啥原因啊?
这是因为
at
的执行与终端机环境无关,而所有
standard output/standard error output
都会传送到执行
者的
mailbox
去
啦!所以在终端机当然看不到任何信息。那怎办?没关系,
可以透过终端机的装置
来处理!假如你在
tty1
登入,则可以使用『
echo "Hello" > /dev/tty1
』来取代。
Tips
要注意的是,如果在
at shell
内的指令并没有任何的讯息输出,那么
at
默认不会发
email
给执行者的。
如果你想要让
at
无论如何都发一封
email
告知你是否执行了指令,那么可以使用『
at -m
时
间格式
』来下达指令喔!
at
就会传送一个讯息给执行者,而不论该指令执行有无讯息输出了!
at
有另外一个很棒的优点,那就是『背景执行』的功能了!什么是背景执行啊?很难了½吗?其实
与
bash
的
nohup (
第十六章
)
类似啦!
鸟哥提我自己的几个例子来给您听听,您就瞭了!
.
脱机继续工作的任务
:鸟哥初次½触
Unix
为的是要跑空气质量模式,
那是一种大型的程序,这个程序在
当时的硬件底下跑,一个案例要跑
3
天!由于鸟哥也要½行其他研究工作,因此常常使用
Windows 98 (
你
没看错!鸟哥是老人
...)
来联机到
Unix
工作站跑那个
3
天的案例!½果你也该知道,
Windows 98
连开
三天而不当机的机率是很低的~
@_@
~
而当机时,所有在
Windows
上的联机都会中断!包括鸟哥在跑的
那个程序也中断了~呜呜~明明再三个钟头就跑完的程序,
由于当机害我又得跑
3
天!
.
另一个常用的时刻则是例如上面的范例三,由于某个突发状况导致你必须要½行某项工作时,这个
at
就很
好用啦!