68
68
如何以特定用户身份运行cron作业?
我想在我的机器上以特定用户的身份运行一个cron作业。我如何指定cron作业的运行用户?
cron作业将在服务器上运行(在Ubuntu 10.0.4上运行)。用户 “是专门为执行特定服务器端任务而创建的用户。这些 "用户 "有以下共同点:
- 无法登录系统
- 对特定文件夹/文件的访问受到限制。
我想在我的机器上以特定用户的身份运行一个cron作业。我如何指定cron作业的运行用户?
cron作业将在服务器上运行(在Ubuntu 10.0.4上运行)。用户 “是专门为执行特定服务器端任务而创建的用户。这些 "用户 "有以下共同点:
以root身份编辑user1的cron:
crontab -u user1 -e
你也可以用以下方式启动你的命令。
su user1 -c foo bar
但通常情况下,当以root身份启动时,脚本本身会减少自己的访问权限。
我找了几个星期,终于成功了……。
创建你的脚本为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
有时你可能希望用户加载他的环境,特别是在使用 “rbenv"、"nvm "的时候,就像这样:
0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...
(这里命令source ~/.bash_profile
将加载你的Ruby或Node环境。