“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 upifconfig eth0 down 由于上述命令需要特殊权限(sudo),这些命令应该添加到sudo'scron 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 区别的主要内容,如果未能解决你的问题,请参考以下文章

服务器遭***rootkit不慌

实用的Python库

laravel5.5 任务调度 (转载)

locate语法

Linux -定时任务调度

AWS Opsworks:logrotate 它会自动运行吗?