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
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
ファイアウォール内部のWindows11 PCにmacOS Sequoiaからリモートデスクトップする
ファイアウォール内部のNode.js+Socket.ioを外部からProxyPassを通して使う
ファイアウォール内部のGradio/WebUIを外部からProxyPassを通して使う
オープンソースリップシンクエンジン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が出力されない場合
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Apache】サーバーに同時接続可能なクライアント数を調整する
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Gmailのプロモーションメールをすべて削除する方法
【Linux】iconv/libiconvをソースコードからインストール
【Raspberry Piメモ・3】オンボード無線LANでWi-fi Direct対応機器に接続する
GitLabにHTTPS経由でリポジトリをクローン&読み書きを行う
Debian 12で固定IPアドレスを使う設定をする
Windows11でMacのキーボードを使うには