アプリケーション開発ポータルサイト
ServerNote.NET
カテゴリー【Debian
レンタルサーバーCORESERVERでCRONを定期実行する
POSTED BY
2021-02-02

安価なレンタルサーバーCORESERVERはSSHでLinuxの仮想マシンにログインできるのでかなり自由に色々できる。

CRONも使えるので、定期的に自分のスクリプトを実行させることもできる。

しかしながら、コンソールで自分でcrontabコマンドで登録してもすぐに勝手に消失してしまう(※当方環境)ので注意が必要。

登録するには、CORESERVERのコントロールパネルから行う。

https://cp.coreserver.jp/site/cron/

「サイト設定→CRONジョブ」と、ちゃんとここから登録せよ、とあるので、

実行させたいスクリプトファイルのパス、スケジュールを設定し新規作成する。

例)毎日22時0分にホームディレクトリのcron_script.shを実行

/virtual/coreuser9999/cron_script.sh
分:0
時:22
日:*
月:*
曜日:*

CRONの書式についてはLinux Manpageに説明あり。

https://linuxjm.osdn.jp/html/cron/man5/crontab.5.html

「登録」して少し待てば、コンソール上のcrontabコマンドでも確認できる。あくまで確認のみで、crontabコマンドで直接編集してはいけない。必ずコントロールパネル上で行うこと

その他注意点

・スクリプトファイルには実行権限をつけておくこと。

chmod a+x cron_script.sh

・スクリプトファイル先頭は#!/usr/bin/bashなどと宣言し、作業したいディレクトリに明示的にcdすること。

#!/usr/bin/bash

cd /virtual/coreuser9999

・スクリプトファイル内で、環境変数LANGを明示的に宣言しておくこと。

export LANG=ja_JP.UTF-8

これをしておかないと、LANGが何故かASCIIとされてしまうので、Pythonスクリプト実行時に以下のようなエラーが出ることがある。

UnicodeEncodeError: 'ascii' codec can't encode character

・標準出力・標準エラー出力にprintしてしまうとCRONがメールを発出してしまうのでリダイレクトすること。

python3.6 analytics-report.py > report.json 2> error.log

上記例では、Google Analytics APIにPythonで接続し結果JSONをreport.jsonに、エラーをerror.logファイルにそれぞれ出力して抑制している。

・まとめると以下のようなスクリプトになるかと。

/virtual/coreuser9999/cron_script.sh

#!/usr/bin/bash

cd /virtual/coreuser9999

export LANG=ja_JP.UTF-8

python3.6 analytics-report.py > rank.html 2> error.log
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【webmaster/管理人】
自営業プログラマー
ご連絡は以下アドレスまで★

☆お仲間ブログ1↓
匠のコーヒーブレイク
☆お仲間ブログ2↓
一人社長の不動産業務日誌
【キーワード検索】