
こんばんは、皆さん。
先頭行が#!/usr/bin/perlから始まる簡単なPerlスクリプトを書き、
実行権を777にし、/etc/rc.localとrootのcronに記述しました。
記述した内容が間違っていないと仮定した場合、動作しますか?
質問の仕方がよくないと思いますが、つまり、cronや/etc/rc.localは
シェルスクリプトでないと制御できないのでしょうか?
実際に試してみましたが、シェルならうまくいくのですが、
Perlを起動できていないようです。
どうすればcronや/etc/rc.localでPerlを扱えるのでしょうか?
よろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
0 0 * * * root /home/test/test.pl 1>/home/test/output.txt
rootは不要でした。すみません。
0 0 * * * /home/test/test.pl > /home/test/output.txt
test.plはあなたが#3に書いたものでいいです。
というか、ちゃんと動くものなら何でもいいです。
どんな複雑なもんでもどうぞご自由に。
この回答への補足
どうやらこちらのカテゴリで質問すべき内容ではなかったようです。
Perlに限らず、Cでも同様と思われますので、Linuxカテゴリで質問すべきでした。
ちなみにlogger~はloggerコマンドを実行しています。
この説明はググればどこにでも出ている簡単なものですので、
詳細な説明はそちらにゆずるとします。
回答ありがとうございました。
No.3
- 回答日時:
書式通りかけば普通にperlスクリプトも実行できると思います。
ただ、例がprint文なので、出力先を適当に指定してやらなければいけないのでは?と思います。0 0 * * * root /home/test/test.pl 1>/home/test/output.txt
とすれば output.txt
に出力されませんか?適当なterminalの標準出力に出力する方法も有るのかも知れませんが、私は知りません。
system("logger -p local6.info -i -t test OK");
は私の知識不足で何をやっているのか分からないのですが。教えて頂けたら嬉しいです。
この回答への補足
0 0 * * * root /home/test/test.pl 1>/home/test/output.txt
と上記のとおりcrontabに記述してみたところ、
0バイトのファイルが作成されるだけでした。
test.plの内容はどのようにすればよいのでしょうか。
試したのは、
#!/usr/bin/perl
print "test";
です。
なお、Perlスクリプトに実際に記述するものは複雑なスクリプトです。
まず簡単なスクリプトで動作しないことには使えないので、
代表としてprint文で試してみました。
実際はファイルに出力すればよいだけではないので、
任意のPerlスクリプトが実行できないと要件が満たせないことになります。
よろしくお願いします。
No.2
- 回答日時:
まず、これはあまり関係ないことですが、パーミッションを 777 にするのはセキュリティー上おすすめできません。
せめて 755 とかにしておきましょう。で、そのスクリプトに Perl の文法上の間違いがなく、尚且つ普通にログインしてコマンドラインから実行した時に正常動作するとしても、たとえばそのスクリプトの中から system() などで他のプログラムを動かしていた場合、環境変数の PATH の違いによっては正常動作しない可能性がありますよね。そういった実行時の違いで動かないということがないか再度確認された方がいいと思います。
この回答への補足
今回はパーミッションが原因でないことを強調するために777としました。
system()を使わない場合でも試してみましたができませんでした。
全てのコマンドについてフルパスで指定しましたので、環境変数の誤りではないようです。
実際に動作するrc.localやcronの設定、Perlスクリプトの例文をそれぞれご回答いただけたらうれしいです。
よろしくお願いします。
No.1
- 回答日時:
cron については sh を実行するので「スクリプトのファイル名を書いただけ」ではダメだと思います. perl を実行するように明記すれば OK?
あるいは
/path/to/perl "$0.pl"
って行だけのシェルスクリプト書いておいて, 実際の処理内容は「なんちゃら.pl」という Perl スクリプトに投げるってのも可能かな.
この回答への補足
実際の設定は次のとおりです。
$ su -
# crontab -e
--------------------
* * * * * root /path/to/perl /home/test/test.pl
--------------------
# ls -l /home/test/test.pl
-rwxrwxrwx 1 test test 12345 5月 1 10:00 test.pl
# cat /home/test/test.pl
--------------------
#!/usr/bin/perl
print "OK\n";
system("logger -p local6.info -i -t test OK");
--------------------
$0.plはスクリプト名をどこに指定するのでしょうか?
次のようにした場合、$0の内容はどうリンクするのでしょうか?
# crontab -e
--------------------
* * * * * root /path/to/perl "$0.pl"
--------------------
試しに次のようにしてみたところ、やはり動きません。
# crontab -e
--------------------
* * * * * root /bin/bash /home/test/test.sh
--------------------
# vi /home/test/test.sh
--------------------
#!/bin/bash
/path/to/perl /home/test/test.pl
--------------------
Perlスクリプトは手動では問題なく動作します。
またcronも簡単なシェルスクリプトを作成して試しましたので、
動作は問題ないことは確認済みです。
Perlスクリプトを実行可能な方法をご存知でしたら教えてください。
もしできないということでしたら、その理由も知りたいです。
少なくとも実行可能にする方法がないということだけでも知りたいです。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
- UNIX・Linux デフォルト値のパラメータ展開 1 2022/08/12 17:34
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- 工学 制御工学の問題について 2 2022/10/30 20:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ディスクの空き容量を求める(W...
-
crontab での実行結果が違う
-
VBScriptでCurrentDirectoryを...
-
UWSCのスクリプトにラグが発生...
-
AWkの配列についてのデバッグ
-
VBSを利用して、IEのタブを自動...
-
Cからシェルを起動し返り値をハ...
-
rshを使うスクリプトをバックグ...
-
ADサーバにおけるログインID,PC...
-
ラズパイ CSV 定量削除
-
Perl Debugger のエラ-
-
例外処理のフローチャートの記...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
VBSがコンパイルエラーになりま...
-
vba userFormのSubを標準モジュ...
-
混合言語のデバッグ(VC++6.0,V...
-
モジュールとクラスの違いって...
-
エクセルVBAでシートモジュール...
-
Excel VBA 定義されたプロージ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADサーバにおけるログインID,PC...
-
Cからシェルを起動し返り値をハ...
-
Perlのライセンス
-
powershellで関数名を変更する...
-
cygwinでcshが認識されず困って...
-
UWSCのスクリプトにラグが発生...
-
VBScriptでCurrentDirectoryを...
-
perlスクリプトのブラウザURLか...
-
awkの処理速度を改善したい
-
シェルでsyntax errorがでてしまう
-
vbs: オブジェクトがコレクショ...
-
Postfixでメールを受信したらPe...
-
複数のスクリプトを同時に走ら...
-
CGI_Lite.pmは,Perl6.5.1 で使...
-
perlでコマンドライン文字列受...
-
スペースを含むファイルの実行...
-
PHPとJavaScriptを足してビルド...
-
なぜAドライブが起動するのでし...
-
CGI + Mysqlによるバックアップ
-
Windows系OSのPerlスクリプト...
おすすめ情報