0

cygrunsrv と vixie の cygwin 用の cron を使用してスケジュールされた cron ジョブを取得しました。このジョブは、あるディレクトリから別のディレクトリにファイルをコピーして名前を変更するシェル スクリプトです。

スクリプトは /home/martin/my/script/copy_files.sh にあります。パスの許可は次のとおりです。

drwxrwxrwt+ 1 martin root         0 2010-06-02 17:36 home
drwxr-xr-x+ 1 martin Domain Users 0 2010-06-03 16:19 martin
drwxrwxrwt+ 1 martin Domain Users 0 2010-06-02 16:47 my
drwxrwxrwt+ 1 martin Domain Users 0 2010-06-04 16:31 script
-rwxr-xr-x  1 martin Domain Users 439 2010-06-02 18:10 copy_files.sh

ls -l を実行すると、ソース ファイルは次のようになります。

-rwxrw-rw-  1 martin Domain Users 13856 2010-06-04 10:05 .bash_history

しかし、ジョブが実行されると、cp コマンドは次の理由で失敗しました。

cp: /home/martin/.bash_history: The system cannot find the path specified.

では、何が問題なのですか?どうすれば修正できますか?

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

4

1 に答える 1

0

私は cygwin をしばらく見ていないので、これに関する私の詳細はほとんどありません。

あなたの問題はディレクトリツリーです。コピーする前に、cwd (cd を使用) を /home/martin に設定する必要があります。秘訣は、cron がログインする場所に対して、/home がどこにあるかを知ることです。率直に言って、覚えていませんが、docset で見つけられなかったことは覚えています。

時刻が 15:28 であるとします。crontab -e に入り、これを追加します:

30 * * * *  /usr/bin/echo "current dir= $(pwd)  $PATH" 2&>1 > ./19191919.log

15:31 まで待って、crontab -e に移動し、そのエントリを削除します。私たちはもうそれを望んでいません

find / -type f -name 19191919.log  -exec /usr/bin/cat {} \;

これは、あなたが知る必要があることを教えてくれます。PATH とログインディレクトリの場所の両方について。vixie での私の経験では、/etc/passwd のホーム ディレクトリではありませんでした。

/etc/passwd を上書きする .conf ファイルがいくつかありました。

これはかなり前のことなので、違っていたらごめんなさい。

于 2010-06-07T23:53:30.433 に答える