タスク スケジューラでタスクを作成し、スクリプトを記述するためのヒント
タスク スケジューラでタスクを作成し、スクリプトを記述するためのヒント
記事のいくつかは英語から機械翻訳されており、不正確な箇所や文法の間違いを含む場合があります。
目的
この記事は、[DSM ] コントロール パネル> [タスク スケジューラ] でユーザー定義スクリプトを使用してタスクを作成するためのヒントと、スクリプトを記述する際に従うべきベスト プラクティスを提供します。
解決策
ユーザー権限
選択したユーザーが十分な共有フォルダ/ファイル権限を持っていることを確認してください
選択したユーザーは、スクリプトがアクセスする共有フォルダ/ファイルに対する十分な権限を持っている必要があります。 [コントロール パネル] > [タスク スケジューラ] > [作成] > [スケジュールされたタスク] > [ユーザー定義スクリプト] > [全般] で設定し、 [ユーザー]ドロップダウン リストから選択します。
「userA」を使用して次のスクリプトを実行していると仮定します。「userA」が共有フォルダ「/volume1/share/data」に対する十分な権限を持っていることを確認してください。
grep error /volume1/share/output.log > /volume1/share/error.log
ユーザーがアクセス権を持つ作業ディレクトリに変更します (絶対パス)
これにより、ユーザー ホーム サービスが有効になっているかどうかに関係なく、システムはタスクを実行できます。
「userA」を使用してスクリプトを実行していると仮定し、作業ディレクトリを「userA」が権限を持つディレクトリに変更するコマンドラインを含めてください。
cd /volume1/share/
スクリプトの作成
スクリプトを入力するには、 [コントロール パネル] > [タスク スケジューラ] > [作成] > [スケジュールされたタスク] > [ユーザー定義スクリプト] > [タスク設定] > [コマンドを実行] を選択します。
スクリプトで絶対パスを使用する
これにより、システムとスクリプトが異なる PATH 値を想定している可能性がなくなります。
正しい例
|
間違った例
|
---|---|
/bin/touch /volume1/share/output.log |
touch /volume1/share/output.log |
スクリプトの実行に使用するシェルのタイプを示します
デフォルトでは、システムは DSM が使用するデフォルトのシェル タイプを使用します。あいまいさを避けるために、スクリプトで使用するシェル タイプを指定します。
正しい例
|
間違った例
|
---|---|
/bin/bash /volume1/share/script.sh |
/volume1/share/script.sh |
スクリプトや出力をシステム パーティションではなく共有フォルダに保存
ユーザー ファイルは常に共有フォルダに保管してください。これにより、システムの再起動時やアップデート時にユーザー ファイルが失われるのを防ぎます。共有フォルダに大きなファイルを保存すると、システム パーティションが占有されることがなくなり、DSM のパフォーマンスが最適化されます。
正しい例
|
間違った例
|
---|---|
bin/bash /volume1/share/script.sh > /volume1/share/output.log
bin/bash /volume1/share/script.sh > /volume1/share/output.log |
/bin/bash /root/script.sh /bin/bash
/bin/bash /root/script.sh /bin/bash /volume1/share/script.sh > /root/output.log |