linux - 用于记录服务器检查的 Shell 脚本手动运行,但不是来自 cron

标签 linux shell

我正在使用一个基本的 shell 脚本来记录每分钟 top、netstat、ps 和 free 的结果。

这是脚本:

/脚本/logtop:

TERM=vt100
export TERM

time=$(date)
min=${time:14:2}

top -b -n 1 > /var/log/systemCheckLogs/$min
netstat -an >> /var/log/systemCheckLogs/$min
ps aux >> /var/log/systemCheckLogs/$min
free >> /var/log/systemCheckLogs/$min

echo "Message Content: $min" | mail -s "Ran System Check script" email@domain.com

exit 0 

当我直接运行这个脚本时,它工作正常。它创建文件并将它们放在/var/log/systemCheckLogs/中,然后给我发一封电子邮件。

但是,当我试图让 cron 每分钟执行一次时,我无法让它工作。

我试过像这样把它放在/var/spool/cron/root 中: * * * * */scripts/logtop >/dev/null 2>&1 它永远不会执行

我也试过把它放在/var/spool/cron/myservername 中,也是这样: * * * * */scripts/logtop >/dev/null 2>&1 它会每分钟运行一次,但不会在 systemCheckLogs 中创建任何内容。

有没有什么原因它在我运行时有效但在 cron 运行时无效?

此外,权限如下所示: -rwxrwxrwx 1 root root 326 Jul 21 01:53 logtop drwxr-xr-x 2 root root 4096 Jul 21 01:51 systemCheckLogs

最佳答案

通常 crontabs 保存在“/var/spool/cron/crontabs/”中。此外,通常,您在完成后使用 crontab 命令将其更新为此 HUP crond,它将确保文件位于正确的位置。

您是否使用 crontab 命令来创建 cron 条目? crontab 直接导入一个文件。 crontab -e 使用 $EDITOR 编辑当前的 crontab。

关于linux - 用于记录服务器检查的 Shell 脚本手动运行,但不是来自 cron,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157508/

相关文章:

c - 在脚本中使用 sleep 会消耗 cpu 周期吗?

linux - 在一个文件中搜索给定模式的另一个文件

c++ - C(++) 套接字 fd_* 正在阻塞/延迟写入/发送

c - 我构建的 glibc 中来自 ld-linux 的段错误

c - FUSE开放系统调用机制

linux - 在 Linux 上动态设置环境变量

c++ - 如何从 shell 传递整数 vector ?

linux - 如何在centos 7上的sh脚本中获取任何服务的状态?

c++ - c++代码第一次在linux上执行时间特别慢

linux - 如何替换: in grep output +