• 締切済み

crontabをshellで実行するには?

Linux(Centos 6.2)でユーザを追加する際に、 そのユーザ権限で定期的に実行するプログラム(getmail)を設定したいと思っています。 で、shellでユーザを追加しようと思って #!/bin/sh # $1 = user $2 = pass $USRDIR = ユーザのホームディレクトリ useradd -d $USRDIR $1 echo "$1:$2\n" | chpasswd chown -R $1 $USRDIR chmod -R 770 $USRDIR echo "*/1 * * * * $1 /usr/bin/getmail 2>/dev/null\n" >> /etc/crontab としようと思ったのですが、 色々なサイトで、「crontabの設定ファイルを直接書くのは良くない、crontabコマンドを使え」と言われており、 crontabで設定したいのですが、crontab -u $1 -e とすると、viが起動してしまい、 どうしたら良いかわかりません。。。 どうしたら良いのでしょうか? お願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

そこから適当に入れればよかったと思う.

pokapoka1980
質問者

お礼

ありがとうございました。 出来ました。

関連するQ&A

  • chmodをapplescriptで実行したい。

    はじめまして AppleScript初心者です。 OSXServer10.4.8でファイル共有しています。 フォルダのアクセス権を定期的にchownコマンドで変更したいと思いますが、うまくいきません。 Applescriptでchmodコマンドを実行するものを用意しましたが、スクリプトエディタでスクリプトファイルを実行するとchmodでアクセス権が変更されるのですが、このスクリプトをcrontabに登録して特定の時間に実行するように設定すると機能しません。 AppleScript//////////////////// set cmdchown to "/usr/sbin/chown -R test /test1" do shell script cmdchown password "password" with administrator privileges set cmdchmod to "/bin/chmod -R 755 /test1" do shell script cmdchmod password "password" with administrator privileges ////////////////////////// 定期的にオーナーとアクセス権を変更するにはどうすれば良いですか? よろしくお願いします。

  • crontabの設定ができない(編集画面が出ない)

    CentOS5.2を使っています。 crontabの設定を行おうと、 # chkconfig --list crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off で確認後、$ crontab -e  としましたが、 no crontab for aaabbb - using an empty one と出て、編集ファイルが表示されません。 $ crontab -l  とすると no crontab for aaabbb と出、 # crontab -l  も    no crontab for root  となります。   念のため # chmod 777 /etc/crontab としてみましたが、結果は同じです。 $ less /etc/crontab でファイルを開くと ------------------------ SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly /etc/crontab (END) ---------------------- となっています。 Webで設定例を検索すると、no crontab for aaabbb - using an empty one の下に crontab: installing new crontab と出ると記載されているのですが、 私の場合、このような表示や動きは出ませんが、どのようにして crontab を設定していくのでしょうか。どうか宜しくお願いします。

  • crontab -lの結果取得

    教えて下さい。 <? $lines = shell_exec("crontab -l"); echo $lines; ?> 上記結果でcronのジョブ一覧を取得したかったのですが、期待通りの結果が返ってきませんでした。(何も取得できませんでした。) crontab -l自体は通常のコマンドとして使えているのですが、、 実行ユーザーの問題かと思い、"crontab -u root -l"ともしてみましたが結果は同じでした。 また、パスの問題かと思い、"/usr/bin/crontab -u root -l"ともしてみましたが結果は同じでした。 この場合、どこが問題となっているのでしょうか。 宜しくお願い致します。 FedoraCore9 php-5.2.5-7.fc9.i386 httpd-2.2.9-1.fc9.i386

    • ベストアンサー
    • PHP
  • PHPからcronを編集したい

    ブラウザから時間を指定してリクエストを投げると下記PHPを実行するプログラムがあります。 shell_exec("echo {$pass} | sudo -S sh -c 'cat {$root_dir}/craw/crontab.txt > /var/spool/cron/crontabs/{$cron_user}'"); shell_exec("echo {$pass} | sudo -S chown {$cron_user}:crontab /var/spool/cron/crontabs/{$cron_user}"); shell_exec("echo {$pass} | sudo -S chmod 600 /var/spool/cron/crontabs/{$cron_user}"); 実行はちゃんと行われて、/var/spool/cron/crontabs/userの中身もちゃんと期待したとおりに変更されています。 しかし、いくら待っても登録したjobが実行されることはありません。(/var/log/syslogを見ても実行された形跡はありません) shell_exec("echo {$cron_pass} | sudo service cron restart"); を付け加えてみても結果は同じでした。 crontab -eで編集→保存とするとちゃんと反映されるようです。 どのようにすればPHPからcronを登録できるでしょうか。 よろしくお願い致します。

  • crontab でスクリプトが動かない

    一応環境ですが、 CentOS5 PostgreSQL8 crontabでDBのバックアップを取ろうと思っていますがうまく動作しません。 以下のスクリプトファイルを作成し、crontabで毎日実行しようと考えています。 /home/hogehoge/Maintenance.sh/pg_dumpall.sh (内容)-------------------------------------------------------- #!/bin/sh cd /home/hogehoge/Maintenance.sh pg_dumpall -h localhost -U postgres -c > pg_dumpall.dump chmod 600 pg_dumpall.dump -------------------------------------------------------- crontab (内容)-------------------------------------------------- 0 4 * * * /home/hogehoge/Maintenance.sh/pg_dumpall.sh -------------------------------------------------------- しかし、時間になってもpg_dumpall.dump ファイルが作成されません。 crontab自体は動作しています。(ファイル作成だけをしたらちゃんとできてました) 0-59/2 * * * * /bin/date > /home/sweets/Maintenance.sh/hoge pg_dumpall.sh の内容を1行ずつ実行しても正常にできます。 cd /home/hogehoge/Maintenance.sh pg_dumpall -h localhost -U postgres -c > pg_dumpall.dump chmod 600 pg_dumpall.dump なにかほかにも設定しなくてはいけないことがあるのでしょうか?

  • Shellでの環境変数

    Shell(親)ではShell(子)を呼び出しています。 Shell(子)では環境変数を設定しており、設定直後にechoすると設定した環境変数の内容が出力されます。 ですが、Shell(子)からShell(親)に戻った直後にShell(子)で設定した環境変数をechoすると、値が空になっています。 なんで空になるのかわかりません。 お手数かけますが、ご教授おねがいします。 <Shell(親)の内容> ./Shell(子) echo "TESTDIR(親):$TESTDIR" <Shell(子)の内容> TESTDIR=/dev/fs/test export TESTDIR echo "TESTDIR(子):$TESTDIR" <Shell(親)の実行結果> TESTDIR01:/dev/fs/test TESTDIR02: ←空白 ※環境 OS:Windows 2003 Server Shell:SUAのKorn Shell

  • Fedora11 crontab 設定エラー

    Fedora11「crontab -l」が「コマンドが見つかりません」になる。 (Q1) Fedora11で、cron を利用したく動作テストしています。 crontab は、/etc内にあります。 [root@betasei etc]# ls -l crontab* -rwxrwxrwx. 1 root root 420 2011-05-18 10:36 crontab テスト用スクリプトです。 [root@betasei etc]# cat test.sh echo xxxxxxxx gedit crontab で次のように編集しました。 [root@betasei etc]# cat crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin/:/etc/ MAILTO=root HOME=/ # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR #sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command to be executed 1 1 * * * /etc/test.sh 設定確認すると、次のようにエラーになります。 [root@betasei etc]# ./crontab -l ./crontab: line 13: 1: コマンドが見つかりません [root@betasei etc]# 1 1 * * * /etc/test.sh ここのところを ./test.sh にしてみたりしてもダメです。 どうしたらよいのでしょうか。 (Q2) ところで、crontabの編集は、ターミナルやろうとして、 crontab -e と実行すると、viか何かの空白編集画面が出ます。 上記 gedit crontab の画面のように初期値が出ません。 gedit crontabで編集してもよいのですね。 (Q3) /etc/crontab は、テキストファイルですね。 でも、このcrontabは実行ファイルですね。 ./crontab -l どうなってるですか。 初歩的な質問ですみません。

  • シェルスクリプトでユーザ登録をしたい

    OSはDebian GNU/Linux 3.0です。 以下のことを自動でやりたいのですが どのようにすればよいですか? 現在 #!bin/sh useradd $1 chown group $1 でスクリプトを動かしています。 しかしこれだとuser名をすべて打つ必要があります。 ユーザ名をあらかじめ書いておいたviファイルを 使うなどして自動で実行できないのでしょうか?

  • crontab -e で作成したファイルはどこに?等

    crontab -e で、viである時間で自動で毎日処理するのコマンドを書きました。 viの:w(上書き保存)で書いたファイルを保存しました。 そのファイル名はcrontab.1508(tmp/crontab.1508)と勝手になっていましたが、 find / -name crontab* をしても出てきませんでした。 確かに、viで:wした時にこの名前で上書き保存されたとおもうのですが・・・。 crontab -lで設定したファイルを確認すると、viで書いたものが出てきますので、ど こかに保存されていると思います。 質問ですが、(1)crontab -e で作成したファイルはどこにいってしまったのでしょうか。 (2)/etcに、/etc/cron.daily、/etc/cron.monthly、/etc/cron.weekly、/etc/cron.d /etc/cron.hourly、とありますが、これらはcrontab -eで作成したファイルと関係あるのでしょうか。 (3)別のマシンにこれらの/etcをコピーすれば同じ処理ができるのでしょうか。 (4)crontabの処理を追加していくには、crontab -e でviを起動し、追加していけばそれでよいのでしょうか。 (5)処理したいファイルを書き、crontab ファイル名 という方法もあるようですが、 この書いたファイルは/etc以下に置いても良いのでしょうか。 (一般的に、/etcはバックアップを取っておく様なので…) 教えてください。おねがいします。

  • cronで実行できない

    crontab -e  で記述をしたけれど動作しないので色々調べて毎分動くようにしてみたり色々試した物の動きません。現在以下のような記述になってます。どう直したらいいですか。OSはDebian sargeでcronでなく手で動作させると正常です。 SHELL=/bin/sh */1 * * * * /usr/bin/biffpop -c /root/.biffpoprc > /dev/null 2>&1