关于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

待执行完计划后,查看日志文件,是正常的


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章