Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在crontab中以root用户身份运行Bash文件吗?_Bash_Crontab - Fatal编程技术网

可以在crontab中以root用户身份运行Bash文件吗?

可以在crontab中以root用户身份运行Bash文件吗?,bash,crontab,Bash,Crontab,我需要定期运行该文件,并且它必须是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/cron

我需要定期运行该文件,并且它必须是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]# 

是的,只需将其添加到根用户的;运行
crontab-e
命令

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

您可以这样做

crontab -e

作为root。

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

一种方法(通过sudo):

  • 您需要设置sudo prilvileges,以便在不输入用户凭据的情况下运行帐户
  • 添加“sudo/path/to/command”(不带“)以根用户身份运行该命令。还可以向该命令添加参数

  • 只需指定
    root
    作为
    /etc/crontab
    中条目的用户:

    0 0 *  * *  root  somecommand
    

    或者,您也可以使用
    crontab-e
    作为root用户,将该命令添加到root用户的个人crontab中。

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

  • 您可以按照建议将其添加到根crontab
  • 你可以按照建议使用sudo
  • 您可以使用setuid位。setuid位的问题是它需要是一个已编译的程序。如果它已编译,您可以“chmod 4755”并将文件的所有者设置为root,它将作为root运行。如果它未编译,您可以用C(或任何其他编译编程语言)编写一个小包装器这只需调用脚本和包装器上的setuid,并确保包装器归root所有
  • 我的建议?使用根crontab。这就是它的用途

    此外,根据sth的建议,crontab中没有用户条目。语法为:

    # .---------------- 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
    

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

    您也可以尝试在serverfault上问这个问题。我列出了所有crontab文件,您的意思是我应该修改哪些文件?与其自己直接修改crontab文件,whatsisname建议您使用“crontab-e”命令,该命令将编辑正确的crontab。谢谢你,顺便说一句,你能告诉我其他crontab文件的用途吗?/usr/bin中的crontab文件是一个可执行文件,如果你键入“crontab-e”,它将打开一个编辑器。/usr/share/man下面的文件是你键入“man crontab”时得到的手动页面“/usr/share/vim*/sytax/crontab.vim是vim的特殊语法高亮显示(为crontab文件激活)。这对我不起作用。我收到消息/bin/sh:1root:notfound,这会导致cron将“root”解释为命令。在一些(较旧)版本的cron中,crontab中指定了一个用户。请参见是否应为
    sudo crontab-e
    @FreeMemory@Alper当您是root用户时,不需要
    sudo