Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash/Dash:进程在";“金融机构”;在一个;如果是,则为“否则”;陈述_Linux_Git_Bash_Raspbian_Dash Shell - Fatal编程技术网

Linux Bash/Dash:进程在";“金融机构”;在一个;如果是,则为“否则”;陈述

Linux Bash/Dash:进程在";“金融机构”;在一个;如果是,则为“否则”;陈述,linux,git,bash,raspbian,dash-shell,Linux,Git,Bash,Raspbian,Dash Shell,我有下面的脚本,它从我的mysql数据库中创建SQL转储。然后由git对文件进行历史记录。在这个脚本中,我遇到了一个奇怪的行为,即使经过一些研究,我也无法回答 如果我运行脚本,我会收到一个错误,在第25行(即“fi”语句),进程“/usr/bin/git commit-m”$NOW”被终止: xxx@xxx:/var/log# /opt/mysql_backup.sh [master 12fd643] 2016-12-29 /opt/mysql_backup.sh: Line 25: 1116

我有下面的脚本,它从我的mysql数据库中创建SQL转储。然后由git对文件进行历史记录。在这个脚本中,我遇到了一个奇怪的行为,即使经过一些研究,我也无法回答

如果我运行脚本,我会收到一个错误,在第25行(即“fi”语句),进程“/usr/bin/git commit-m”$NOW”被终止:

xxx@xxx:/var/log# /opt/mysql_backup.sh 
[master 12fd643] 2016-12-29
/opt/mysql_backup.sh: Line 25: 11163 Killed                /usr/bin/git commit -m "$NOW"
在调试过程中,我注释掉了if-then-else语句,该语句检查git是否存在,scipts运行时没有错误

我的问题是:为什么dash在“fi”语句中“终止”git命令?事实上,提交是执行的,所以我想知道错误消息的原因是什么。脚本是在dash on Raspbian Jessie上运行的

提前谢谢

约格

脚本:/opt/mysql\u backup.sh

#!/bin/dash
# TARGET: Backup-Ziel
# IGNORE: Liste zu ignorierender Datenbanken (durch | getrennt)
# CONF: MySQL Config-Datei, welche die Zugangsdaten enthaelt
TARGET=/srv_ext/z_backup/mysql
IGNORE="phpmyadmin|mysql|information_schema|performance_schema|test"
CONF=/etc/mysql/debian.cnf
if [ ! -r $CONF ]; then /usr/bin/logger "$0 - auf $CONF konnte nicht zugegriffen werden"; exit 1; fi
if [ ! -d $TARGET ] || [ ! -w $TARGET ]; then /usr/bin/logger "$0 - Backup-Verzeichnis nicht beschreibbar"; exit 1; fi

DBS="$(/usr/bin/mysql --defaults-extra-file=$CONF -Bse 'show databases' | /bin/grep -Ev $IGNORE)"
NOW=$(date +"%Y-%m-%d")

for DB in $DBS; do
    /usr/bin/mysqldump --defaults-extra-file=$CONF --skip-extended-insert --skip-comments $DB > $TARGET/$DB.sql
done

if [ -x /usr/bin/git ] && [ -d ${TARGET}/.git/branches ]
then
  cd $TARGET
  /usr/bin/git add .
  /usr/bin/git commit -m "$NOW"
else
  /usr/bin/logger "$0 - git nicht verfuegbar oder Backup-Ziel nicht unter Versionskontrolle"
fi

/usr/bin/logger "$0 - Backup von $NOW erfolgreich durchgefuehrt"
exit 0
使用“set-x”运行的输出:

xxx@xxx:/opt# ./mysql_backup.sh 
+ TARGET=/srv_ext/z_backup/mysql
+ IGNORE=phpmyadmin|mysql|information_schema|performance_schema|test
+ CONF=/etc/mysql/debian.cnf
+ [ ! -r /etc/mysql/debian.cnf ]
+ [ ! -d /srv_ext/z_backup/mysql ]
+ [ ! -w /srv_ext/z_backup/mysql ]
+ /usr/bin/mysql --defaults-extra-file=/etc/mysql/debian.cnf -Bse show databases
+ /bin/grep -Ev phpmyadmin|mysql|information_schema|performance_schema|test
+ DBS=c_db
s1_db
s2_db
zabbix
+ date +%Y-%m-%d
+ NOW=2016-12-29
+ /usr/bin/mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --skip-extended-insert --skip-comments c_db
+ /usr/bin/mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --skip-extended-insert --skip-comments s1_db
+ /usr/bin/mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --skip-extended-insert --skip-comments s2_db
+ /usr/bin/mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --skip-extended-insert --skip-comments zabbix
+ [ -x /usr/bin/git ]
+ [ -d /srv_ext/z_backup/mysql/.git/branches ]
+ cd /srv_ext/z_backup/mysql
+ /usr/bin/git add .
+ /usr/bin/git commit -m 2016-12-29
[master b8952b9] 2016-12-29
Killed
+ /usr/bin/logger ./mysql_backup.sh - Backup von 2016-12-29 erfolgreich durchgefuehrt
+ exit 0

当然,覆盆子只有1G,我没有启用交换,因为SD存储卡的磨损升级。交换功能正常!Joerg

你能在她砰砰的一声(
)!/bin/dash
后添加一行
set-x
吗若要在调试器模式下运行脚本并查看失败原因,请假定您可以连续复制错误。@伊尼安:谢谢您的查看!我添加了输出,错误消息是从底部算起的第三行。@Joerg
Killed
表示SIGKILL,这通常是由于内存不足造成的。
dmesg
是否显示内存不足错误?系统有多少可用RAM?@jordanm就是这样!真遗憾我没有想到这一点。当然,覆盆子只有1G,我没有启用交换,因为SD存储卡的磨损。交换工作正常!非常感谢!