Crontab脚本文件语法

时间:2011-05-02 05:59:40

标签: shell cron crontab freebsd

我在学校的UNIX系统管理课程中,必须生成一个执行以下操作的Cron作业:

  • 每小时查询系统以查找 谁登录了谁。
  • 将结果邮寄到我的电子邮件帐户。

我知道实际的crontab将如下所示:

# Check to see who is logged in every hour.
MAILTO="me@email.com"
0       *       *       *       *       root    /tmp/loggedin.sh

OR

# Check to see who is logged in every hour.
MAILTO="me@email.com"
@hourly /tmp/loggedin.sh

但是我已经谷歌搜索了一段时间,并且无法找到.sh文件应该是什么样子的任何示例。我知道它始于:

#!/bin/bash
# Shell script to see who is logged in, to be run every hour.

我不知道还有什么可以放在那里。非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

我认为who应该做到这一点。它将显示一次登录系统的所有用户的列表。您可以将其写入文件,然后将其邮寄给您。

w会告诉您当前登录的人员正在做什么。

所以,脚本看起来像:

#!/bin/sh  
HOME=<your home directory>
who > ${HOME}/usersLoggedIn.txt  
w > ${HOME}/whatLoggedInUsersAreDoing.txt  

${HOME}指的是您的主目录。在命令提示符下,echo $HOME应该为您提供主目录。命令whow的输出将重定向到主目录中的文件usersLoggedIn.txtwhattLoggedInUsersAreDoing.txt。当然,您可以更改要将此数据写入的目录和文件名。

HTH,
斯利拉姆

答案 1 :(得分:1)

来自cron作业的任何输出都会邮寄给用户。如果您不关心主题行,您的cron条目就像这样简单:

@hourly w

如果你关心它,请使用mail(1):

@hourly w|mail -s'Users logged in' me@work.example.com

答案 2 :(得分:1)

#!/bin/bash
# Shell script to see who is logged in, to be run every hour.
who | mail -s "Who is logged in `date`" "$MAILTO"