shell脚本的内容如下:
date
cur_date=`date '+%Y-%m-%d'`
cur_time=`date '+%Y-%m-%d %H %M %S'`
start_date='2014-01-01'
end_date=`date '+%Y-%m-%d'`
FiveDaysBack=`date --date='-7 day' "+%Y-%m-%d"`
rm -f *.sql
mysqldump -h192.168.200.150 torr > torr1.sql &
mysqldump -h192.168.200.100 torr > torr2.sql &
...
...
...
wait && echo `date` complete.我以以下方式运行这个脚本:
nohup etl.sh &
执行脚本将导致进入nohup.out文件的所有sql转储,而不是torr1.sql、torr2.sql et。因此,我得到一个巨大的nohup.out文件,其中我希望转储去torr.sql文件。
请注意,这个脚本所做的远不止这些,我并不是在寻找获得mysql转储的替代安排。我只想知道为什么mysqldump输出没有进入指定的文件,而是被定向到nohup.out。我想解决这个问题。
发布于 2014-02-14 06:19:21
好吧,这听起来会很愚蠢。
mysqldump --insert-ignore --skip-add-drop-table --no-create-info --lock-tables=false -ucrbt_se -pcrbt_se -h10.2.2.150 blah master_backup --where "date(END_TIME)>='$FiveDays'" --result-file=torr1.sql 而Nano正在把文字包裹起来。由于转储的大小很大,我从来没有等待看到MySQL在最后抛出的错误,它向命令指示了错误的参数。
浪费了2天。见鬼。
发布于 2014-02-11 09:42:33
发布于 2014-02-11 16:11:45
最后一行应该有两个字符:wait && echo $(date) complete.
这仍然不能回答你的问题。也许mysqldump写到stderr,或者您的etl.sh用stdout做了一些有趣的事情。
我用这个脚本重现了你的问题:
sleep 10
rm non_existing > stdout.txt启动此脚本(我将其保存为rm_nothing.sh)
nohup rm_nothing.shrm的输出没有出现在stdout.txt中。
请尝试添加2>&1
mysqldump -h192.168.200.150 torr > torr1.sql 2>&1 &https://stackoverflow.com/questions/21697079
复制相似问题