我想在我的计算机上以特定用户身份运行 cron 作业。我如何指定 cron 作业的运行用户?
cron 作业将在服务器上运行(在 Ubuntu 10.0.4 上运行)。“用户”是专门为执行特定服务器端任务而创建的用户。这些“用户”具有以下共同点:
- 无法登录系统
- 限制对特定文件夹/文件的访问
答案1
假设您不能直接登录并将其添加到该用户的 crontab 中,请将文件放入 中/etc/cron.d
。它应该被格式化为普通的 cronjob,但带有一个额外的字段。在要运行的命令之前和计时之后,放置用户。您应该能够在系统上找到已有的示例。
例子:
#<timing> <user> <command>
11 * * * * root /usr/lib/command
答案2
以 root 身份编辑 user1 的 cron:
crontab -u user1 -e
您还可以使用以下命令启动命令:
su user1 -c foo bar
但通常,以 root 身份启动时,脚本本身会降低自己的访问权限。
答案3
我已经寻找这个好几个星期了,现在终于成功了......
以 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
退出-保存更改(保存时将显示 /tmp 目录...没问题)
等待时机
打开你新创建的 yay.txt
nano /home/user1/yay.txt
你现在应该打开一个 nano 窗口,其中的第一行也是唯一一行是“YAY it works”,如果你的 nano 窗口底部显示 New File... 嗯... 我不知道
您还可以在 /var/spool/cron/crontabs/user1 检查 user1 的新 crontab 条目
和平
答案4
有时你可能希望用户加载他的环境,特别是在使用 时rbenv
,nvm
就像这样:
0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...
(此处的命令source ~/.bash_profile
将加载您的 Ruby 或 Node 环境。)