项目的关系,每次都要更新好几个文件夹比较麻烦,而且刚好已经安装好了WSL( Windows Subsystem for Linux )因此开始折腾起了自动更新的工作,使用的是crontab服务。此文介绍如何在WSL中配置crontab服务以及遇到的一些问题。
安装以及配置
检查是否已经安装了svn,如果没有安装,使用
sudo apt install subversion
进行安装,无需关注版本问题。检查cron服务是否开启,
service cron status
,如果未开启,使用service cron start
如果出现权限问题,前面加上sudo
编写自动更新脚本,可以参照一下脚本。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
export LANG=zh_CN.UTF8
# 以下所有路径,建议写完整路径
echo `date` >> /home/lzrain/autoupdate.log
WorkingPath=/mnt/h/S3Project
w_client=$WorkingPath/client
w_data=$WorkingPath/data
w_design=$WorkingPath/design
w_publish=$WorkingPath/publish
# echo ".......update $w_client......."
# svn up $w_client
echo ".......update $w_data........."
svn up $w_data
echo ".......update $w_design ........."
svn up $w_design
echo ".......update $w_publish ........."
svn up $w_publish
# 写完保存,在终端中使用一下命令改变权限,使其成为可执行文件
chmod +x /mnt/z/autoupdate.sh # 需要将文件路径改为你所保存的文件路径使用
locale -a
检查当前系统语言包是否有zh_CN.UTF8,如果没有,则需要进行安装,不然SVN会出现错误。1
2
3
4# 使用一下语句安装语言环境
sudo apt install language-pack-zh-hans-base
locale -a
# 如果看到zh_CN.utf8证明安装成功使用crontab配置cron自动脚本
1
2
3
4
5
6sudo crontab -u username -e
# 在最后一行填写以下代码
*/5 8-22 * * * /mnt/z/autoupdate.sh >> /home/lzrain/autoupdate.log 2>&1
# */5 每隔5分钟执行
# 8-22 每天8点到22点执行
# 2>&1 重定向错误输出到标准输出,也就是将所有信息都写到 /home/lzrain/autoupdate.log 文件中确定检查没有错误之后,建议将 crontab 进行修改,加入自动删除Log文件的逻辑,防止log文件太大.
1
2
3
4# 完整的crontab配置如下
# 每天8-22点每隔15分钟执行更新操作,最好根据自己的更新频率进行调整
*/15 8-22 * * * /mnt/z/autoupdate.sh >> /home/lzrain/autoupdate.log 2>&1
* 23 * * * echo "" > /home/lzrain/autoupdate.log # 每天23点将autoupdate.log的内容置为"";
错误处理
出现
svn:E000022: Error converting entry in directory
错误,请参照上面的步骤 4 安装 zh_CN.UTF8 语言环境1
2
3
4# 类似错误打印信息如下
svn: E000022: Error converting entry in directory '*****' to UTF-8
svn: E000022: Can't convert string from native encoding to 'UTF-8':
svn: E000022: A_{U+58F0}{U+97f0}若出现
svn: warning: cannot set LC_CTYPE locale
错误,同样参照之前步骤4安装 zh_CN.UTF8 语言环境即可解决。若已经安装了zh_CN.UTF8语言环境,还是出现UTF8编码问题,请检查脚本中是否加入了
export LANG=zh_CN.UTF8