关闭脚本似乎执行了两次

戴维·赖特

我有一个小的备份bash脚本,是我在工作时为计算机编写的。我已将脚本复制到其中/etc/rc0.d/并调用了该脚本K01backup因此在关闭计算机之前先执行该脚本它将来自我的计算机(运行Ubuntu 14.04LTS),我的工作副本和位于单独内部SSD上的虚拟机的所有数据备份到外部硬盘驱动器,并将日志输出添加到每个文件夹中的文件中。

这是脚本:

#!/bin/bash

LOG="/syncLog"
VMORIG="/media/SSDData/VM"
PROJORIG="/media/Data/Projects"
DESTROOT="/media/ExtData/Backups"
LOGVM=${DESTROOT}"/VM"${LOG}
LOGPROJ=${DESTROOT}"/Projects"${LOG}
ALLORIG="/"
DESTALL=${DESTROOT}"/All"
LOGALL=${DESTROOT}"/All"${LOG}


echo "STARTED" > ${LOGPROJ}
date +%d.%m.%Y/%H:%M:%S >> ${LOGPROJ}
rsync -avvx --progress --no-whole-file ${PROJORIG} ${DESTROOT} >> ${LOGPROJ}
echo "FINISHED" >> ${LOGPROJ}
date +%d.%m.%Y/%H:%M:%S >> ${LOGPROJ}

echo "STARTED" > ${LOGVM}
date +%d.%m.%Y/%H:%M:%S >> ${LOGVM}
rsync -avvx --progress --no-whole-file  ${VMORIG} ${DESTROOT} >> ${LOGVM}
echo "FINISHED" >> ${LOGVM}
date +%d.%m.%Y/%H:%M:%S >> ${LOGVM}

echo "STARTED" > ${LOGALL}
date +%d.%m.%Y/%H:%M:%S >> ${LOGALL}
rsync -avvx --progress --no-whole-file --exclude "/media/*" --exclude "/indel/*" ${ALLORIG} ${DESTALL} >> ${LOGALL}
echo "FINISHED" >> ${LOGALL}
date +%d.%m.%Y/%H:%M:%S >> ${LOGALL}

然后我运行sudo chmod +x /etc/rc0.d/K01backup使其可执行。最初,脚本需要大约一个小时的时间来执行,并且运行良好。但是有一会儿,我可以在日志文件中看到脚本在我离开工作一个小时后启动(大概是再次启动),并且所有文件都已经是最新的,因此只花了大约一分钟即可运行。

有人知道我做错了什么吗?

安通

该目录中的自述文件指出,该目录中的脚本在关闭电源时仅被调用一次(而在重新引导时不被调用)。

用一个简单的测试程序

#!/bin/bash

LOG=/root/backup.log
date >> $LOG
echo $* >> $LOG

我注意到有一次该程序实际上被调用了两次,一次是不带参数,一次是带参数“ stop”。但是,我无法复制它。

我会建议记录实际调用参数的程序以及和脚本测试$1stop

通常也将程序backup放在其中/etc/init.d并建立指向/etc/rc0.d/K01backup该脚本的链接,但这不应该以任何方式影响其操作。任何管理此类条目的工具都可以创建/删除这些链接。

基于试用了此基本脚本,OP发现编辑该文件后有一个备份文件:/etc/rc0.d/K01backup~备份文件也已执行。从头开始放置backup文件/etc/init.d/并建立链接可以防止这种情况发生(与是否存在/etc/init.d/backup~文件无关)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

awk else-if语句似乎执行了两次

来自分类Dev

Arduino AttachInterrupt()似乎运行了两次

来自分类Dev

我的GET请求执行了两次

来自分类Dev

Django settings.py语句执行了两次

来自分类Dev

SQL * Plus脚本执行两次

来自分类Dev

Shell脚本执行两次

来自分类Dev

防止两次执行php脚本

来自分类Dev

Angular $ http似乎进行了两次服务器调用

来自分类Dev

返回Fragment时,Android Spinner的onItemSelected执行了两次

来自分类Dev

在Java中使用不必要的值执行了两次查询(错误)

来自分类Dev

jQuery Mobile和一个js计数器执行了两次

来自分类Dev

从构造函数调用函数时,Codeigniter视图执行了两次

来自分类Dev

尽管执行了一次检查,但同时执行插入命令会将数据两次写入数据库

来自分类Dev

由于Android智能手机已安装2次,因此Udev规则执行了两次

来自分类Dev

CFTHREAD执行两次

来自分类Dev

查询执行两次

来自分类Dev

使配方执行两次

来自分类Dev

CFTHREAD执行两次

来自分类Dev

Segue执行两次

来自分类Dev

onActivityResult执行两次

来自分类Dev

useCallBack执行两次

来自分类Dev

查询执行两次

来自分类Dev

CFTHREAD执行两次

来自分类Dev

有时两次执行init.d / rc2.d脚本两次

来自分类Dev

我的插入语句执行了两次,我不知道为什么。sqlite3

来自分类Dev

PHP脚本被调用两次,等待上一次执行的结束

来自分类Dev

gradle :java 测试运行了两次

来自分类Dev

脚本在raspbian中运行两次

来自分类Dev

PHP脚本运行两次