“设置定时器crontab,要求每天12点查看系统登录的用户信息,并将每次查看的用户信息保存到xx文件中”,这里要把查看的信息保存的命令应该是什么样的,是直接写入还是运行一个脚本文件?
可以使用以下命令将查看的用户信息保存到文件中:
who > /path/to/file
这将把当前登录用户的信息写入指定的文件中。如果您想在每天12点运行此命令,可以使用以下 crontab 条目:
0 12 * * * who > /path/to/file
这将在每天12点运行 who 命令,并将输出写入指定的文件中。请注意,此命令将覆盖指定文件中的任何现有内容。
linux服务器上定时任务格式是: 分 时 日 月 周 执行的命令
,所以 每天12点查看系统登录的用户信息 的定时任务如下:
00 12 * * * whoami >> ~/username.txt
## 也可以用 w 命令查看
00 12 * * * w >> ~/username.txt
A:查看日志/var/log/cron显示如下
CROND[15777]: (root) MAIL (mailed 33 bytes of output but got status 0x0043#012)
B:使用sendmail 命令
endmail: warning: valid_hostname: numeric hostname: 7
sendmail: fatal: file /etc/postfix/main.cf: parameter mydomain: bad parameter value: 7
原因:sendmail没有安装
3、重新执行脚本
/bin/sh: root: command not found
原因:root需省略
参考博客:
https://blog.csdn.net/weixin_41399020/article/details/83927414
https://blog.csdn.net/sd4493091/article/details/83345661
https://blog.csdn.net/default7/article/details/40214305?locationNum=4
可以通过crontab命令设置定时任务。步骤如下:
touch login_info.sh vi login_info.sh
在文件中添加以下内容:
last | grep "$(date +'%a %b %d')" > /path/to/save/file/login_info.txt
其中,last命令用来查看登录信息,grep命令用来筛选出当天的登录信息("$(date +'%a %b %d')"用来获取当天的日期,%a表示星期几,%b表示月份缩写,%d表示日期),>用来重定向输出到指定文件(/path/to/save/file/login_info.txt)中。
保存并退出。
chmod +x login_info.sh
crontab -e
在文件末尾添加以下内容:
0 12 * * * /path/to/login_info.sh
其中,0表示分钟为0,12表示小时为12,*表示每天、每月、每周都执行,后面跟上要执行的脚本文件的绝对路径。
保存并退出。
可以使用以下命令将当前登录的用户信息保存到文件中:
who > /path/to/xxfile
以下是完整的 shell 脚本文件:
#!/bin/bash
who > /path/to/xxfile
使用步骤如下:
1 打开终端。
2 输入 crontab -e 命令进入 crontab 编辑界面。
3 在文件末尾添加以下一行:
0 12 * * * /bin/bash /path/to/yourscript.sh
其中,0 12 * * * 表示在每天的 12 点执行,/bin/bash 是解释器的路径(如果不确定可以用 which bash 命令查看),/path/to/yourscript.sh 是你保存上面脚本的文件路径。
4 保存并退出编辑界面。
5 已经设置完成,每天到了 12 点就会自动执行,将当前登录的用户信息保存到指定的文件中。