“sudo crontab -e”和“crontab -e”之间的 linux 区别
Posted
技术标签:
【中文标题】“sudo crontab -e”和“crontab -e”之间的 linux 区别【英文标题】:linux difference between "sudo crontab -e" and just "crontab -e" 【发布时间】:2017-08-31 10:33:17 【问题描述】:我注意到,当我输入 sudo crontab -e
时,我看不到我的 cron 命令,但是当我只输入 crontab -e
时,我的命令就出现了。
两者有区别吗?如果有,我应该把我的 cron 命令放在哪里,应该在 sudo 中还是没有 sudo?
谢谢!
【问题讨论】:
我认为这属于unix.stackexchange.com,因为它与编程无关。 @Skynet 哦,我明白了。所以这就是其他人反对的原因? :( 我猜。但经过一些研究后,我发现这个问题实际上是这个问题的重复:serverfault.com/questions/817499/when-to-use-sudo-with-crontab(顺便说一句,它也有反对意见) 【参考方案1】:两者有区别吗?
是的,确实它们是不同的。
不同之处在于sudo crontab -e
的命令是使用root
用户凭据安排的。这样sudo的cron表中的命令就以root用户的身份执行了。
但是对于crontab -e
,命令是由登录的普通用户安排的。
我应该把我的 cron 命令放在哪里,应该放在 sudo 中还是没有 sudo?
嗯,这个问题的答案取决于您要运行的命令类型。
如果命令需要sudo
访问权限,则应使用sudo crontab -e
。
否则,如果 cron 命令不需要任何特殊权限,则使用 crontab -e
。
示例:
如果应在特定时间禁用或启用以太网网络接口eth0
,那么您将使用命令ifconfig eth0 up
或ifconfig eth0 down
由于上述命令需要特殊权限(sudo),这些命令应该添加到sudo's
cron tab
任何其他需要最小权限或不需要权限的命令,例如从tmp
目录中删除文件,例如$ rm /tmp/somefile
,使用普通用户的 crontab。
【讨论】:
@Pinoy***er 欢迎。很高兴我能回答:) @Santhosh 你能告诉我sudo crontab -e
和crontab -e
的路径是什么,因为我需要通过bash 脚本以编程方式添加一个玉米表达式。
@Koder101 /usr/bin/crontab
谢谢,我在 Ubuntu 中为sudo
用户找到了/var/spool/cron/crontabs/
的路径
这是一个很好的解释。谢谢@Santosh。【参考方案2】:
问题的主要部分是照顾您想要完成工作的用户。否则它不会触发你的 cron 作业。并确保将命令的输出写入任何文件。它将帮助您调试最可能与您的相对路径有关的问题。 这就是我遇到的困难。您可以按照以下步骤继续前进:
-
确定您想使用的用户名。使用 whoami 命令。
转到您选择的用户模式并输入 crontab -e。
并附加行 cron-schedule your-command >> output_filename.cron 2>&1 >
就是这样。
谢谢!
【讨论】:
以上是关于“sudo crontab -e”和“crontab -e”之间的 linux 区别的主要内容,如果未能解决你的问题,请参考以下文章