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

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

我想在我的计算机上以特定用户身份运行 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

有时你可能希望用户加载他的环境,特别是在使用 时rbenvnvm就像这样:

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

(此处的命令source ~/.bash_profile将加载您的 Ruby 或 Node 环境。)

相关内容