私は Debian を使用しています。youtube-dl の cron ジョブを作成しようとしています。これは、真夜中に開始する毎日のスクリプトで構成されています。スクリプトを手動で実行すると、すべて完璧に動作します。ただし、cron ジョブを使用すると、次のようなエラーが発生します。
ERROR: unable to open for writing: [Errno 13] Permission denied: '/media/Video/...
cronは次のとおりです:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@daily /usr/local/bin/youtube-dl-script.sh >> /var/mail/nextcloud 2>&1
どこかに権限の問題があるのは理解していますが、解決方法がわかりません。
ご参考までに :
- 対象フォルダ (
/media/Video/
) の所有者/グループは :www-data
(所有者)、wwww-data
(グループ)です - スクリプトの所有者/グループは:
nextcloud
(所有者)、root
(グループ) nextcloud
root
グループに属しているwww-data
- 対象フォルダ (
/media/Video/
) の権限は770
(所有者/グループは読み取り/書き込み/実行可能、その他は何もできない) です。
どうか助けていただけないでしょうか? 似たようなトピックを見たことがありますが、問題がまったく同じではなかったため、解決できませんでした。 どうもありがとうございます。
編集(古いステータス):これまで、ルールを遵守して(/グループが所有する拡張子とスクリプトを削除して)、スクリプト( youtube-dl-script.sh
)をフォルダーにコピーしようとしました。 で確認すると、次の出力が表示されます。/etc/crontab.daily
.sh
root
root
cat /etc/crontab
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
つまり、通常であれば、今朝の午前 6 時 25 分に動作するはずでしたが、動作しませんでした。
他のスクリプトには最後のビットがあることを発見したので-x
、 を作成しましたchmod +x youtube-dl-script
。
その前に、スクリプトは です
-rwxr-x--- 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script
。さて、それは です
-rwxr-x--x 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script
。
これが機能するかどうかを確認するには、明日の午前 6 時 25 分まで待つ必要があります。
編集2(現在のステータス): 動作しません。chmod 755
他のすべてのスクリプトと同じ権限を持つように設定し、サーバーを再起動しましたが、動作しません。
非常に奇妙なのは、私がそうした場合run-parts --test /etc/cron.daily
、私のスクリプトがリストされているので、cron.daily
何かお考えがありましたら、お気軽にお知らせください。ありがとうございます。
答え1
はい、解決策を見つけました:
/etc/cron.hourly
まず、スクリプトがインストールされていなかったためanacron
、また毎時間使用したいため、スクリプトを に移動しました。しかし、動作しませんでした。
次に、cron サービスがアクティブかどうかを確認するために を実行しましたsudo service cron status
。アクティブでしたが、 のような興味深い警告も見つかりましたyour token was expired, renew your token
。そこで、このエラー メッセージをインターネットで検索したところ、root パスワードを更新する必要があることがわかりました。そうしないと、cron が正しく動作しません。これを確認するには、 を使用する必要がありました。sudo chage -l root
その結果、root パスワードが であることが示されましたexpired
。
そのため、 でルート パスワードを更新しsudo passwd root
、 で再度確認したところ、sudo chage -l root
パスワードが正常であることが示されました。これで、すべてが正常に実行され、cron は期待どおりに動作しています。