自分のマシンで特定のユーザーとしてcronジョブを実行したいです。 cronジョブを実行するユーザーをどのように指定できますか?.
Cronジョブはサーバー上(Ubuntu 10.0.4上で実行中)で実行されます。 「ユーザー」は、特定のサーバー側タスクを実行するために特別に作成されたユーザーです。これらの「ユーザー」には、以下の共通点があります。
単にログインしてそのユーザーのcrontabに追加することができないと仮定して、ファイルを/etc/cron.d
に入れます。通常のcronjobとしてフォーマットされるべきですが、追加のフィールドがあります。実行するコマンドの前とタイミングの後に、ユーザーを置きます。あなたのシステムにはすでに例が見つかるはずです。
例:
#<timing> <user> <command>
11 * * * * root /usr/lib/command
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
あなたのナノウィンドウの一番下に「New File」と表示されている場合、最初の唯一の行として「YAY it works」でナノウィンドウを開いているはずです。
/ var/spool/cron/crontabs/user1でuser1の新規crontabエントリを確認することもできます。
平和
特に "rbenv"、 "nvm"を使用しているときなど、ユーザーに自分の環境をロードさせたい場合があります。
0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec Ruby ...
(ここでコマンドsource ~/.bash_profile
はあなたにRubyまたはNode環境をロードします。