点击(此处)折叠或打开
- 写了个备份mysql并scp远程备份的脚本,大致过程如下
- #!/bin/bash
- list="database1 database2 database3 ... database n"
- for database in $list
- do
- mysql -u root -ppasswd $database > $database.sql
- scp $database.sql 192.168.1.2:
- done
- 单独执行没有任何问题,放在crontab执行发现只有9个文件scp过去了,最后几个全都收到了ssh认证失败的错误,这个是怎么回事?
- ssh_exchange_identification: Connection closed by remote host^M
- lost connection
点击(此处)折叠或打开
- 回复 10# wenhq
- 没有,这次是手工执行的,./mysql_backup.sh &
- 上次这样执行就重现这个问题了,就是1L最后两行的那个错误,但是这次就没提示。
- 似乎crontab改成* * * * *也没问题,但是定时就出问题了……
- 如果正常断开了,在目标服务器的auth.log显示的是session closed by,而不是received disconnect from……
- 看来scp最好还是不要放到for循环中了,不知道为什么会出现ssh通道关不掉的问题,等整个后台程序退出的时候才把所有的通道都关闭……
看来脚本放在cron中会有可能出现特殊情况
难到crontab中的scp进程在crontab退出以后才退出,,写shell脚本的注意鸟。还好我习惯只scp一次