Bash-Skript (Cronjob):运行错误语言的程序

Bash-Skript (Cronjob):运行错误语言的程序

必须导出哪个 ENV 才能使 bash cronjob 脚本以正确的语言打开程序?

如果我在命令行中手动打开 bash 脚本,程序就会以正确的语言打开。

但是如果通过cronjob打开该程序,程序却通过错误的语言运行?

我检查过,LANG ENV 不能在 Crontab 中使用相同的语言。

提前致谢。

答案1

总结您需要设置LC_ALLLC_MESSAGES。例如:

LC_ALL=en_US.utf8

您的机器支持的所有语言环境列表可以通过以下方式获取:locale -alocale -av了解更多详细信息。

细节

crontab(5)手册页 ( man -S5 crontab) 中:

crontab 中的活动行是环境设置或 cron 命令。环境设置的格式如下:

name = value

Content-Type:默认情况下,cron 使用 的标题 发送邮件,text/plain并将charset=参数设置为 charmap/codeset启动 crond(8) 的语言环境,即,如果没有LC_*设置环境变量,则为默认系统语言环境,或由环境变量指定的语言环境LC_*(请参阅 )。通过将crontab 中的和 变量locale(7)设置为这些名称的邮件标题的正确值,可以使用不同的字符编码来邮寄 cron 作业输出。CONTENT_TYPECONTENT_TRANSFER_ENCODING

locale(7)手册页 ( man -S7 locale) 中:

LC_MESSAGES
此类别会影响显示消息的语言以及肯定或否定答案的形式。GNU C 库包含gettext(3)ngettext(3)rpmatch(3) 函数,以简化此信息的使用。LANGUAGE如果将类别设置为除 之外的有效语言环境,GNU gettext 系列函数还会遵循环境变量(包含以冒号分隔的语言环境列表) C。此类别还会影响 的行为 catopen(3)

LC_ALL
上述所有的。

要对进程的环境进行故障排除,您可以使用以下命令显示它。 替换<PID>为仍在运行的 cron 作业的进程 ID。 您需要使用至少需要几分钟的 cronjob 进行测试(例如sleep 300)。

ps e -wwp <PID>

相关内容