jiabanl 发表于 2018-8-25 08:23:18

关于crontab执行shell脚本的字符编码问题

  有时我们在在写完shell脚本后,在使用bash执行是正常的如下
  /var/crontab/clouds.sh
  #! /bin/bash
  log_name="/var/log/clouds.log"
  echo begin:$(date) >> $log_name
  cd /datas
  tar -czf /clouds/www-$(date "+%Y%m%d%H%M").tar.gz www 2>> $log_name
  tar -czf /clouds/conf-$(date "+%Y%m%d%H%M").tar.gz /etc/httpd/conf 2>> $log_name
  echo end:$(date) >> $log_name
  我们在在命令行下,运行
  bash /var/crontab/clouds.sh一切正常,日志里的时间都是utf-8
  我们在crontab里设置一个计划,
  SHELL=/bin/bash
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  MAILTO=root
  HOME=/
  08 11 * * * root /var/crontab/clouds.sh
  在到日志文件里,查看里面的内容都不是utf-8的格式的,全是英文模式下的,
  在到日志文件里,查看里面的内容都不是utf-8的格式的,全是英文模式下的,
  我们时在/var/crontab/clouds.sh进行修改增加一行
  . /etc/profile
  加载用户环境变量,即
  #! /bin/bash
  . /etc/profile
  log_name="/var/log/clouds.log"
  echo begin:$(date) >> $log_name
  cd /datas
  tar -czf /clouds/www-$(date "+%Y%m%d%H%M").tar.gz www 2>> $log_name
  tar -czf /clouds/conf-$(date "+%Y%m%d%H%M").tar.gz /etc/httpd/conf 2>> $log_name
  echo end:$(date) >> $log_name
  待执行完计划后,查看日志文件,是正常的

页: [1]
查看完整版本: 关于crontab执行shell脚本的字符编码问题