Cronjob命令超長的處理

2021-09-30 01:48:21 字數 1134 閱讀 9071

如果您是查crontab命令被截斷的問題,請先查下命令中是否存在%沒有被轉義。 背景

在docker中啟動容器,結合django-crontab,可以在容器中傳入crontab job具體使用 

請參考 django-crontab。然後在容器的docker-file中 cmd [「/furion/run.sh」],其中run.sh 內容大概是這樣的:

python manage.py crontab add/usr/local/bin/supervisord --nodaemonpython manage.py crontab remove

在容器的啟動命令中加入環境變數:

在容器內執行:printenv,可以看到各種環境變數的值

crontab本身有個不太好的地方,就是無法獲取宿主機的環境變數,django-crontab就是可以解決這個問題,如下描述。

crontab_command_prefix

something you want to do or declare, before each job gets executed. a good place for environment variables. 

default: 」 (empty string) 

example: 『stage=production』

但是當環境變數非常多的時候,多到和命令加起來大於等於1000,這個時候,你可以crontab -e看到那個很長的命令,但是tail -f /var/log/syslog會看到命令在999的長度位置發生了截斷,遇到這種問題,先分析下原因。

1. crontab job 長度1000的由來

在此處有人討論,長度為999,遂查詢crontab原始碼: vixie-cron-4.1.tar.bz2,

./macros.h:48:    #define max_command 1000    /* max length of internally generated cmd */

這個crontab並沒有乙個配置檔案可以用來設定其命令大小,所以自然而然乙個解決辦法就是修改原始碼,重新編譯核心,我沒有具體實踐,感興趣的同學可以試試,記得分享下。

2. 解決長度限制的方法

超長簡訊的處理辦法

gsm 03.40規範 tp 06 1999 12 15 7.4.0 中規定了sme對於超長簡訊的合併處理。規範制定至今,已經超過6年,絕大多數正在使用的手機,都支援這一功能。cmpp協議中,cmpp submit message中有兩個欄位pk total和pk numer,恰看起來,這就是傳送超...

php RSA非對稱加密超長字元處理

class rsa param public key公鑰 return false resource private static function getpublickey public key 私鑰加密 param private key私鑰字元 param string content 加密字...

PHP RSA加解密工具,超長加密問題處理 二

解決超長加密問題思路 分割分段加密 rsa加解密超長處理 namespace leyangjun lib class cryptrsa 超長加密 由於秘鑰有長度限制比如1024,2048約長表示接受的加密資料越多,否則會有超長加密不成功的問題 117表示長度,加密的時候可以從這開始分割加密 解密的時...