2022-10-01


安価なレンタルサーバー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
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
Apple Developer Program有料メンバーシップでアプリをApp Storeで配信するまで【2】
Apple Developer Program有料メンバーシップでアプリをApp Storeで配信するまで【1】
¥x16進形式のログをデコードして表示する
CGIプログラムで操作した/tmp内ファイルが見つからない場合
【Xcode】No such module GoogleMobileAdsの対処法
【Swift UI】CocoaPodsを導入してGoogle Mobile SDKを使う
UbuntuにPHPを導入しMariaDBに接続するメモ
【Swift UI】フォントのデフォルトサイズはいくつか
【Swift UI】Cannot assign to property: self is immutableの対処法
Windows版Google Driveが使用中と言われアンインストールできない場合
進研ゼミチャレンジタッチをAndroid端末化する
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Androidホームで左にスワイプすると出てくるニュース共を一切表示させない方法
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
OpenAIのGPT-4 APIの順番待ちリストに参加する
Googleスプレッドシートを編集したら自動で更新日時を入れる
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Apache】サーバーに同時接続可能なクライアント数を調整する