2024-09-30


安価なレンタルサーバー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
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
オープンソースリップシンクエンジンSadTalkerをDebianで動かす
ファイアウォール内部のOpenAPI/FastAPIのdocsを外部からProxyPassで呼ぶ
Debian 12でsshからshutdown -h nowしても電源が切れない場合
【Windows&Mac】アプリのフルスクリーンを解除する方法
Debian 12でtsコマンドが見つからないcommand not found
Debian 12でsyslogやauth.logが出力されない場合
Debian 12で固定IPアドレスを使う設定をする
Debian 12 bookwormでNVIDIA RTX4060Ti-OC16GBを動かす
【Debian】apt updateでCD-ROMがどうのこうの言われエラーになる場合
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
【Apache】サーバーに同時接続可能なクライアント数を調整する
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
【ひかり電話+VoIPアダプタ】LANしか通ってない環境でアナログ電話とFAXを使う
GitLabにHTTPS経由でリポジトリをクローン&読み書きを行う
Intel Macbook2020にBootCampで入れたWindows11 Pro 23H2のBluetoothを復活させる
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
Windows11でMacのキーボードを使うには