私のマシン上で特定のユーザーとしてcronジョブを実行したいと思います。cronジョブを実行するユーザーを指定するにはどうすればいいですか?
cronジョブは、サーバー上で実行されます(Ubuntu 10.0.4上で実行されています)。ユーザー」は、特定のサーバーサイドのタスクを実行するために特別に作成されたユーザーです。これらの「ユーザー」には以下のような共通点があります
- システムにログオンできません
- 特定のフォルダ/ファイルへのアクセスが制限されている
73 morpheous 2010-08-02
ログインしてそのユーザのcrontabに追加することができないと仮定して、/etc/cron.d
にファイルを置く。通常のcronjobのような形式にして、余分なフィールドを追加します。実行するコマンドの前とタイミングの後には、ユーザーを記述します。すでにあなたのシステム上に例があるはずです
Example:
#<timing> <user> <command>
11 * * * * root /usr/lib/command
86 Daenyth 2010-08-02
rootとして、user1のcronを編集します
crontab -u user1 -e
でコマンドを起動することもできます
su user1 -c foo bar
しかし、多くの場合、rootで起動するとスクリプト自体が自分のアクセスを減らしてしまいます
45 Eric Darchis 2010-08-02
数週間前から探していたのですが、ついにこれが効きました
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
これでナノウィンドウが開いて、「YAY it works」が最初の行として表示されているはずです
で、新しく作成したcrontabのuser1のエントリを確認することもできます。/var/spool/cron/crontabs/user1
PEACE
1 user220364 2013-04-27
特に rbenv
, nvm
を使用している場合は、このように、ユーザが自分の環境をロードしたいと思うことがあるでしょう
0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...
(ここではsource ~/.bash_profile
コマンドでRubyやNodeの環境を読み込みます)
0 Siwei Shen 申思维 2018-11-18