cron:以root身份运行.sh

时间:2018-03-29 23:20:49

标签: linux cron archlinux

首先要说清楚:我使用的是离线的虚拟机 - 因此安全性并不能满足我的需求。

我有一个简单的bash脚本,它使用wmctrl来优雅地关闭进程。 KILL不是一个选择:

* * * * * sudo wmctrl -xc notepadqq-bin.Notepadqq
* * * * * /bin/echo "works" >> /home/usr/cron.log

我尝试sudo crontab -e以及crontab -e,每分钟写一次cron.log,但是wmctrl命令不起作用。

我甚至试过echo "password" | sudo -S rm somefile,但这对我也没有用。

TIA!

1 个答案:

答案 0 :(得分:-1)

首先我要做一些假设(请纠正我,如果这些是错误的,我会尝试为你调整答案)

假设:

  • 您想使用cron而不是任何旧的职位经理(我认为这对您的问题是安全的)
  • 您已经熟悉cron并希望cronjobs尽可能频繁地运行(这对我来说似乎很奇怪,但可能并不是手头问题的核心)(编辑: 我同意其他人的建议,看看https://stackoverflow.com/tags/cron/info,因为它提供了更多关于使用cron的深度讨论。)
  • 您希望将sudo用于root权限,而不是将cron守护程序作为root运行(这在大多数系统上都是正常的)
  • 您对chown 0:0 $(which wmctrl)或更具限制性chmod 4755 $(which wmctrl)
  • 的效果感到不满意
  • cron标签行“* * * * * sudo wmctrl -d>> /home/usr/cron.log”的结果显示此“notepadqq-bin.Notepadqq”仍然是从cron的角度来看的(IF这不是案例检查wmctrl的环境变量是从cron't透视图中保留的。让我知道这个假设是错误的)
  • 您的评论“甚至试图回复”密码“| sudo -S rm somefile但这对我来说也不起作用。”暗示您有使用sudo的密码
  • 你的意思是你的评论“安全是因为我的需要没有显示”

确保Sudoers允许脚本调用

鉴于这些假设,我建议首先考虑如何设置sudo:

试试这个:

(不要使用chmod 4755 $(which wmctrl)命令编辑此文件,否则可能会损坏您的系统) visudo

你会想要一条与此相似的行: export EDITOR=vi ; sudo visudo -f /etc/sudoers 要么 %sudo ALL=(ALL) NOPASSWD: ALL

鉴于您可以确定该问题不是sudo的密码提示问题,并且该命令(通过 cron ALL=(ALL) NOPASSWD: ALL 运行的所有命令都是)默认情况下以root身份运行(不使用sudo时设置为另一个用户)

希望这有帮助