20

我需要该Bash文件定期运行,并且它必须以 root 身份运行。

那可能吗?

[root@file nutch-0.9]# locate crontab
/etc/crontab
/etc/sysconfig/crontab
/usr/bin/crontab
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man1p/crontab.1p.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim71/syntax/crontab.vim
[root@file nutch-0.9]# 
4

6 回答 6

20

是的,只需将它添加到 root 用户的crontab;运行crontab -e命令。

cron 存储其文件的位置可能有点奇怪,所以使用该crontab -e命令将确保它位于正确的位置,并且我相信它会检查语法。

于 2009-06-18T22:19:03.003 回答
16

你可以做

crontab -e

作为根。

于 2009-06-18T22:19:10.350 回答
7

只需将root以下条目指定为用户/etc/crontab

0 0 *  * *  root  somecommand

或者,您也可以使用 root 身份将该命令添加到 root 的个人 crontab crontab -e

于 2009-06-18T22:26:06.373 回答
5

无论如何,您都需要访问 root 用户帐户。

  1. 您可以按照建议将其添加到根 crontab
  2. 您可以按照建议使用 sudo
  3. 您可以使用 setuid 位。setuid 位的问题是它需要是一个已编译的程序。如果已编译,您可以“chmod 4755”并将文件的所有者设置为root,它将以root身份运行。如果它没有被编译,你可以用 C(或任何其他编译的编程语言)编写一个小型包装器,它只调用你的脚本,并在包装​​器上设置 setuid,并确保包装器归 root 所有。

我的建议?使用根 crontab。这就是它的目的。

此外,在 crontab 中没有用户条目,正如 sth 所建议的那样......语法是:

# .---------------- minute (0 - 59) 
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... 
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)  OR sun,mon,tue,wed,thu,fri,sat 
# |  |  |  |  |
# *  *  *  *  *  command to be executed

如果您想以 root 身份在 crontab 中输入某些内容,只需登录到您的 root 帐户,“crontab -e”,然后瞧……root crontab。

于 2009-06-18T22:33:22.460 回答
0

我相信 root 的 crontab 中的所有条目都以 root 身份运行。你可以让它调用一个 Bash 脚本作为操作,它应该做你想做的事。

于 2009-06-18T22:19:28.337 回答
-2

一种方法(通过 sudo):

  1. 您需要为帐户设置 sudo 权限才能在不输入用户凭据的情况下运行
  2. 添加“sudo /path/to/command”(不带“)以root身份运行命令。您还可以为命令添加参数。
于 2009-06-18T22:21:20.627 回答