2010-08-02 11:50:25 +0000 2010-08-02 11:50:25 +0000
68
68

如何以特定用户身份运行cron作业?

我想在我的机器上以特定用户的身份运行一个cron作业。我如何指定cron作业的运行用户?

cron作业将在服务器上运行(在Ubuntu 10.0.4上运行)。用户 “是专门为执行特定服务器端任务而创建的用户。这些 "用户 "有以下共同点:

  • 无法登录系统
  • 对特定文件夹/文件的访问受到限制。

答案 (4)

80
80
80
2010-08-02 11:52:46 +0000

假设你不能直接登录并将其添加到该用户的crontab中,在/etc/cron.d中放入一个文件。它的格式应该和普通的cronjob一样,但是多了一个字段。在要运行的命令之前和定时之后,放上用户。你应该可以在你的系统中找到例子。

例子:

#<timing> <user> <command>
11 * * * * root /usr/lib/command
```。
41
41
41
2010-08-02 11:58:55 +0000

以root身份编辑user1的cron:

crontab -u user1 -e

你也可以用以下方式启动你的命令。

su user1 -c foo bar

但通常情况下,当以root身份启动时,脚本本身会减少自己的访问权限。

1
1
1
2013-04-27 16:49:38 +0000

我找了几个星期,终于成功了……。

创建你的脚本为user1

ssh user1@ipaddress
nano hourly-event.sh

输入一些命令

#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt

使它可执行

chmod 755 hourly-event.sh

编辑user1的crontab

sudo crontab -u user1 -e

在底部写一行指向你的脚本

# m h dom mon dow command
* * * * * bash ./hourly-event.sh

exit - - - 保存更改(保存时将显示一个/tmp目录。 …没关系)

等待一分钟的时间

打开你新创建的yay.txt

nano /home/user1/yay.txt

你现在应该有一个nano窗口打开,第一行是 “YAY it works",如果你的nano窗口底部写着 "New File”…好吧…我不知道

你也可以检查你的新crontab entry for user1,地址是: /var/spool/cron/crontabs/user1

PEACE

0
0
0
2018-11-18 10:05:38 +0000

有时你可能希望用户加载他的环境,特别是在使用 “rbenv"、"nvm "的时候,就像这样:

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...

(这里命令source ~/.bash_profile将加载你的Ruby或Node环境。