linux下命令行解析 linux 解析( 二 )


at 的使用限制是利用 /etc/at.allow 与 /etc/at.deny 这两个文件来进行的! 加上这两个文件后,at 的工作情况其实是这样的:
在一般的 distributions 当中,由于假设系统上的所有用户都是可信任的 , 因此系统通常会保留一个空的 /etc/at.deny 文件 , 意思是允 许所有人使用 at 指令的意思 (您可以自行检查一下该文件) 。不过,万一你不希望有某些 使用者使用 at 的话,将那个使用者的帐号写入 /etc/at.deny 即可! 一个帐号写一行 。
单一工作调度的进行就使用 at 这个指令!这个指令的运行非常简单!将 at 加上一个时间即可!基本的语法如下:
事实上,当我们使用 at 时会进入一个 at shell 的环境来让使用者下达工作指令,此时,建议 你最好使用绝对路径来下达你的指令 , 比较不会有问题!由于指令的下达与 PATH 变量有关 ,  同时与当时的工作目录也有关连 (如果有牵涉到文件的话),因此使用绝对路径来下达 指令,会是比较一劳永逸的方法 。举例来说,你在 /tmp 下达 at now然后输入 mail -s "test" root.bashrc,问一下 , 那个 .bashrc 的文件会是在哪里?答案是 /tmp/.bashrc !因为 at 在运行时 , 会跑到当时下达 at 指令的那个工作目录运行!
要注意的是 , 如果在 at shell 内的指令并没有任何的讯息输出,那么 at 默认不会发 email 给执行者的 。如果你想要让 at 无论如何都发一封 email 告知你是否执行了指令,那么 可以使用“ at -m 时间格式 ”来下达指令! at 就会传送一个讯息给执行者 , 而不论该指令执行有无讯息输出了!
如果要在某某时刻,在我的终端机显示出 Hello 的字样 , 可以通过终端机的设备来处理!假如你在 tty1 登陆(在命令行里面输入 tty 可以查看),则可以使用 echo "Hello"/dev/tty1。
at 有另外一个很棒的优点,由于 at 工作调度的使用上,系统会将该项 at 工作独立出你的 bash 环境中,直接交给系统的 atd 程序来接管 , 因此,当你下达了 at 的工作之后就可以立刻离线了, 剩下的工作就完全交 给 Linux 管理即可!所以如果有长时间的网络工作时,使用 at 可以让你免除网络断线后的困扰 。
其实 batch 是利用 at 来进行指令的下达!只是加入一些控制参数而已 。这个 batch 神奇的地方在于:他会在 CPU 的工作负载小于 0.8 的时候 , 才进行你所下达的工作任务啦!
那什么是工作负载 0.8 呢?这个工作负载的意思是: CPU 在单一时间点所负责的工作数量 。不是CPU 的使用率喔! 举例来说,如果我有一只程序他需要一直使用 CPU 的运算功能,那么此 时 CPU 的使用率可能到达 100%,但是 CPU 的工作负载则是趋近于“ 1 ” , 因为 CPU 仅负责一个工作!如果同时执行这样的程序两支呢? CPU 的使用率还是 100% ,但是工作负载 则变成 2 了! 所以也就是说,当 CPU 的工作负载越大 , 代表 CPU 必须要在不同的工作之间进行频繁的工 作切换 。因为一直切换 工作,所以会导致系统忙碌?。?系统如果很忙碌 , 还要额外进行 at ,不太合理!所以才有 batch 指令的产生!
下面来实验一下 batch 好了!为了产生 CPU 较高的工作负载 , 我们用了 计算 pi 的脚本 , 连续执行 4 次这只程序,来仿真高负载,然后看看batch 的工作现象 。
使用 uptime 可以观察到 1, 5, 15 分钟的“平均工作负载”量,因为是平均值,所以当我们如上 表删除掉四个工作后,工作负载不会立即降低,需要一小段时间让这个 1 分钟平均值慢慢回 复到接近 0 ?。〉毙∮?0.8 之后的“整分钟时间”时,atd 就会将 batch 的工作执行掉了!

推荐阅读