2010-08-02 11:50:25 +0000 2010-08-02 11:50:25 +0000
68
68

特定のユーザーとしてcronジョブを実行するには?

私のマシン上で特定のユーザーとしてcronジョブを実行したいと思います。cronジョブを実行するユーザーを指定するにはどうしたらいいですか?

cronジョブはサーバー上で実行されます(Ubuntu 10.0.4上で動作しています)。ユーザー」は、特定のサーバーサイドのタスクを実行するために特別に作成されたユーザーです。

  • システムにログオンできない
  • 特定のフォルダ/ファイルへのアクセスが制限されている
  • システムにログオンできない
  • 特定のフォルダ/ファイルへのアクセスが制限されている

回答 (4)

80
80
80
2010-08-02 11:52:46 +0000

ログインしてそのユーザーのcrontabに追加することができないと仮定して、/etc/cron.dにファイルを入れます。これは通常のcronjobのようにフォーマットされている必要がありますが、余分なフィールドがあります。実行するコマンドの前とタイミングの後には、ユーザを入れます。あなたのシステムにはすでに例があるはずです。

例:

#<timing> <user> <command>
11 * * * * root /usr/lib/command
41
41
41
2010-08-02 11:58:55 +0000

rootとして、user1のcronを編集するには:

crontab -u user1 -e

でコマンドを起動することもできます。

su user1 -c foo bar

しかし、多くの場合、root で起動するとスクリプト自体が自分のアクセスを減らしてしまいます。

1
1
1
2013-04-27 16:49:38 +0000

数週間前から探していたのですが、ようやく解決しました。

スクリプトを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" が最初の行として表示され、ナノウィンドウの下部に New File と表示されているはずです…まあ…わからない

また、新しく作成したユーザー1のcrontabエントリも確認できます。/var/spool/cron/crontabs/user1

PEACE

0
0
0
2018-11-18 10:05:38 +0000

特に “rbenv "や "nvm "を使用している場合は、以下のように、ユーザが自分の環境をロードしたい場合もあるでしょう:

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

(ここではsource ~/.bash_profileコマンドでRubyやNodeの環境をロードします。