qin*_*126 2 shell-script ubuntu ubuntu-12.04
我编写了一个简单的 shell 脚本来关闭 ubuntu 服务器。然后我创建了一个 cron 作业来每天 23:59 执行这个脚本。
#!/bin/bash
sudo shutdown -h now
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)
当我从代码中删除 sudo 时,我收到了不同的错误消息:
/home/qinking126/scripts/test.sh: line 3: shutdown: command not found
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
确保 cron 脚本可执行并且也以 root 身份运行,并替换shutdown为以下提供的完整路径:
command -v shutdown
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu GNU/Linux(以及一般的 GNU/Linux)上,它应该是/sbin/shutdown:
#!/bin/bash
/sbin/shutdown -h now
Run Code Online (Sandbox Code Playgroud)
请注意,添加一个名为类似/etc/cron.d/midnight-shutdown且包含以下内容的文件:
59 23 * * * root test -x /sbin/shutdown && /sbin/shutdown -h now
Run Code Online (Sandbox Code Playgroud)
应该做你想做的事,而不需要完整的 bash 脚本的开销。这是快速安装的代码:
echo '59 23 * * * root test -x /sbin/shutdown && /sbin/shutdown -h now' \
| sudo tee '/etc/cron.d/midnight-shutdow'
sudo service cron reload
Run Code Online (Sandbox Code Playgroud)
编辑:要回复您的评论,另一种可能的设置是:
echo '59 23 * * * test -x /sbin/shutdown && /sbin/shutdown -h now' \
| sudo tee '/etc/cron.d/midnight-shutdown'
sudo service cron reload
Run Code Online (Sandbox Code Playgroud)
很奇怪的是 cron 会打印出这样的错误消息。
| 归档时间: |
|
| 查看次数: |
36851 次 |
| 最近记录: |