通过linux中的使用/etc/crontab来做定时任务,出现乱码问题

[复制链接]
查看11 | 回复4 | 2021-1-27 06:45:09 | 显示全部楼层 |阅读模式
我有一个程序本来是使用的nohup命令来后台执行,但是因为未知原因有时候会自动终止程序,所以做了一个定时任务来判断程序是否还在执行,如果没有运行了就调用tomcat,但是启动了之后出现了已经编译好的java代码出现了中文乱码问题,可是正常手动启动程序又不会出现这种问题。来各位大侠帮帮我吧!!分轻情意重
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:45:09 | 显示全部楼层
直接原因是语言设置问题。crontab运行时语言可能是英文,需要配置LANG或LC_ALL环境变量。这俩的关系楼主再百度一下吧,我也记不清谁覆盖谁了。
正常登录shell运行程序,会执行到.bashrc或.bash_profile或.profile之类。请查看你登录shell的流程。
这个流程中是否有设置语言的地方。
另外,确定你登录用的是bash还是sh。
在很多系统中,bash和sh虽然链接的是同一个文件,但确实不同的shell,表现为不同的行为。比如bash比sh更多一些语法,sh不会去读.bashrc之类。

回复

使用道具 举报

千问 | 2021-1-27 06:45:09 | 显示全部楼层
我在调用脚本的前面加上了./etc/profile;/bin/sh解决了,,不过我想应该还有其他的办法是把
回复

使用道具 举报

千问 | 2021-1-27 06:45:09 | 显示全部楼层
根本原因是:Cron执行时和手动执行的环境变量不一样。

回复

使用道具 举报

千问 | 2021-1-27 06:45:09 | 显示全部楼层
解决方案是对的,主要就是环境变量问题,语言设置方面不同
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行