今天碰到一个坑爹的问题,定时用php程序从远程的mssql读取数据,并写入到mysql中,手动用php执行程序的时候,程序运行没有问题,但当用crontab任务定时执行php程序的时候就出问题了,插入mysql数据中文乱码。

刚开始以为是编码的问题,调了mysql的编码,调了linux系统的编码,发现都不行。通过各种搜索才知道,原来手动运行与crontab任务运行的环境是不同的。

环境变量相关配置文件

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的设置文件中搜集shell的设置。

/etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取.

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时及每次打开新的shell时,该该文件被读。

~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。

/etc/profile是全局性的功能,其中设置的变量作用于所有用户,~/.bash_profile中设置的变量能继承/etc/profile中的变量并作用于用户。

~/.bash_profile 是交互式、login 方式进入 bash 运行的

~/.bashrc 是交互式 non-login 方式进入 bash 运行的

通常二者设置大致相同,所以通常前者会调用后者。

大家都知道crontab是个好东东,可以定时执行一些任务,帮助你监控系统状况,帮助你每天重复的做一些机械的事情。但是crontab有一个坏毛病,就是它总是不会缺省的从用户profile文件中读取环境变量参数,经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错

一般crontab无法运行的问题都是由环境变量在crontab中不一定可识别引起的。

在运行crontab的时候,是non_login方式调用程序的,此时~/.bash_profile并不会被提前调用。所以,crontab的运行环境相对于login方式进入bash运行的环境来说小得多。如果程序涉及~/.bash_profile使用的环境变量,那么,部分在login方式可以正常运行的程序在crontab下就无法运行。

所以解决办法就是用以下命令:source ~/.bashrc && cd /root && 你要执行的命令

crontab java 乱码_crontab 任务程序执行乱码的问题相关推荐

  1. java 中文乱码_好程序员Java学习路线分享如何处理中文参数

    好程序员Java学习路线分享如何处理中文参数,为什么表单中会产生中文乱码. 好程序员Java培训 产生乱码,就是因为服务器和客户端沟通的编码不一致造成的,因此解决的办法是:在客户端和服务器之间设置一个 ...

  2. java程序出现乱码的原因

    Java程序出现乱码的原因有以下几种可能: 编码不一致:Java程序使用的编码与当前系统或其他应用程序使用的编码不一致,导致字符无法正确显示. 字符集不支持:Java程序使用的字符集不支持某些特殊字符 ...

  3. Linux下Java程序中文乱码问题研究

    Linux下Java程序中文乱码问题研究 摘  要:在一个项目的开发中,我用linux内核源代码和busybox源代码自己编译打造的操作系统mylinux 1.0 ,服务器是我用java语言自己编写的 ...

  4. ubuntu下eclipse打开window下的java文件,注释内容为乱码,解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 今天打开了以前的工程,想看看以前写的代码,打开后发现以前的java源文件的注释变成了乱码,于是在google上开始了搜索,得到 ...

  5. java中byte, iso-8859-1, UTF-8,乱码的根源

    本文作者:@Ryan Miao 本文链接:https://www.cnblogs.com/woshimrf/p/java-utf8-iso-charset.html 版权声明: 本博客所有文章除特别声 ...

  6. java怎么解决页面乱码问题_java页面中文乱码的解决办法

    骚年啊,资源文件名不要有中文啊,这可是常识啊 而且文件名不要有空格,不然容易悲剧 ######回复 @汪兴 : 有一个办法规避,就是上传的文件名更名为hash,实际上很多网站都这么做的,最终在页面上的 ...

  7. 由web程序出现乱码开始挖掘(Bom头、字符集与乱码)

    从第一次开始写web程序,自己还有身边同事开发出现乱码情况基本都没有消停过.估计以后还会一样继续. 这么些年,不断修修改改,也总结也归纳.程序从asp,asp.net,jsp,php,服务器从wind ...

  8. java jar 源码乱码,java使用jar包时出现乱码的解决方法

    java使用jar包时出现乱码的解决方法 发布时间:2020-06-17 17:06:29 来源:亿速云 阅读:105 作者:元一 jar包是什么: jar(Java Archive,Java归档文件 ...

  9. 三、Java Web中出现的一些乱码问题总结(详解)

    一.response.getWriter().write()和 response.getWriter().print()的区别 response.getWriter()返回的是PrintWriter, ...

最新文章

  1. TensorFlow(9)(项目)人马图像分类(卷积神经网络)
  2. Centos6.5更换163源 epel源
  3. SimulatorXcode模拟器如何使用PC键盘进行输入
  4. 摘录HTTP头部信息的注释
  5. 两届诺贝尔文学奖得主将同时公布
  6. 【Kafka】kafka zk下注册的信息 get /brokers/ids/1 “host“:null “port“:-1
  7. 计算机专业大学排名_2020全国计算机专业大学排名
  8. 【路径规划】基于狼群算法之三维路径规划matlab源码
  9. doc 问卷调查模板表_问卷调查生成word 调查问卷模板word
  10. 谷歌浏览器误删临时用户恢复书签
  11. Atitit.木马病毒强制强行关闭360 360tray.exe的方法
  12. scala学习之旅(十三):隐式转换和隐式参数
  13. vs2008简体中文正式版下载
  14. nyoj-891-找点
  15. 计算机常用程序在DOS中的英文名
  16. FLUENT中VOF模型的仿真流程
  17. CocoStudio UI 编辑器的使用
  18. PDF文件怎么在线压缩?教你在线压缩的方法
  19. 大数据晋级之路(5)Hadoop,Spark,Storm综合比较
  20. shu mei pai

热门文章

  1. 【nginx】nginx 常用命令
  2. 【高并发】java JUC中的Semaphore(信号量)
  3. 【Zookeeper】cnxn.saslServer is null cnxn object did not init its saslServer properly
  4. IllegalStateException: Error reading delta file hdfs://xxx/spark/xx/state/0/11/1.delta
  5. 【Docker】Docker 启动prometheus报错 parsing YAML file /etc/prometheus/prometheus.yml: yaml: unmarshal
  6. kafka报错:Error writing out kafka.log:type=Log,name=LogStartOffset,topic=xx EofException
  7. ibatis中#和$符号的区别
  8. 发送邮件 ajax,使用Ajax发送电子邮件
  9. Java基本数据类型及其包装类
  10. 基本功:超全面 IO 流教程,小白也能看懂