特定のユーザー用にnodejsをインストールしました。価格フィーダー アプリケーションを実装しました。実行するwhereis feeder
と、次の出力が得られます。
feeder: /home/user/.nvm/versions/node/v11.6.0/bin/feeder
次に、cronjob を実行して 1 時間ごとに実行しようとしてcrontab -e
おり、次のジョブを使用して、ディレクトリ パスのようなユーザー名でログインしたときにcronjob を作成しました。
33 * * * * /home/user/.nvm/versions/node/v11.6.0/bin/feeder nodename priv_key
何らかの理由で、これはトランザクションをブロードキャストしないため、適切なレベルのアクセス権を持ってはなりません (これはブロックチェーン ノードであるため、ブロードキャストと言うときは、ブロックチェーンに表示されることを意味します)。トランザクションを正常にブロードキャストする実行できるテスト関数があるため、それが機能することはわかっているので、cronjob アクセスの問題だと思います。
次のコマンドで出力を表示しようとしましgrep CRON /var/log/syslog
たが、次のエラーが発生しました。grep: /var/log/syslog: Permission denied
sudo grep CRON /var/log/syslog
コメンドで提案されている実行に基づいてジョブが実行されたときの syslog の出力は次のとおりです。
Jan 6 12:33:01 server CRON[14787]: (user) CMD (/home/user/.nvm/versions/node/v11.6.0/bin/feeder nodename priv_key)
Jan 6 12:33:01 server CRON[14786]: (user) MAIL (mailed 52 bytes of output but got status 0x004b from MTA#012)
私の cronjob がこれにアクセスできなかったか、適切な権限を持っていなかった理由を知っている人はいますか?
編集: コメントに基づいて cronjob を更新しました。エラー ファイルの出力は次のとおりです。 /usr/bin/env: ‘node’: No such file or directory
type node
戻り値:
node is /home/user/.nvm/versions/node/v11.6.0/bin/node
エラー メッセージは、実行しようとしているものが、次のシバン行を含む可能性の高いスクリプトであることを意味します。
#!/usr/bin/env node
基本的に、これは「env
このユーザーの $PATH で呼び出された最初の実行可能ファイルを見つける」ことを意味します。PATH
変数は、実行可能ファイルを含むディレクトリのリストを保持しています。問題は、cronのは、独自の環境を持っているので、独自のPATH
、どこでそれがディレクトリが含まれていないnode
コマンドがあります。したがって、crontab ファイルを編集して、次のように変更する必要があります。
PATH="/usr/bin:/bin:/home/user/.nvm/versions/node/v11.6.0/bin"
33 * * * * /home/user/.nvm/versions/node/v11.6.0/bin/feeder nodename priv_key
ファイルではなくディレクトリを追加してください。したがって、あなたnode
が の場合/home/user/.nvm/versions/node/v11.6.0/bin/node
、次のものが必要です。
PATH="/usr/bin:/bin:/home/user/.nvm/versions/node/v11.6.0/bin"
ではありません:
PATH="/usr/bin:/bin:/home/user/.nvm/versions/node/v11.6.0/bin/node"
次に、crontab を保存すれば問題ありません。同様の問題が発生した場合は、手順を繰り返します。cron> /tmp/somefile 2>&1
コマンドの最後に追加して stderr と stdout をファイルにリダイレクトし、エラー メッセージを確認して、必要なものを含むディレクトリを同様の方法でパスに追加します。
PATH="/usr/bin:/bin:/path/to/node:/some/other/path"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加