ssh/scp/tar を使用するシェルを disown したところ tar で失敗しました。
特別なことはやってなくて、サーバー間のファイルコピーとtarの展開です。
対話型ではうまくいくのですが、確認応答をしないといけないのでnohupが使えません。
disownで切り離したあと しばらくしてから結果を確認したところ、
tarが中途半端な結果でした。
disownしてるのでログもでなくてどうしたものかと悩んでおります。
disownすればnohupと同じくセッションが切れても継続して動作するものと思っていましたが何か制約があるのでしょうか?
tarで失敗しているので、tarに画面がないといけない理由があるのでしょうか?
下記ソースコードはシンプルに書き直したものです。
よろしくお願いします。
#!/bin/bash
DATA_ID=xxxxxx
TRG_DATE=20191021
CP_NAME=XXXCP
DB_NAME=XXXDB
DBSV=dbserver
CPSV=cpserver
echo コピー元ディレクトリ
echo "/add_disk2/archive/export_data/$DATA_ID/$TRG_DATE/"
sshpass -p duser ssh duser@dev "ls -l /add_disk2/archive/export_data/$DATA_ID/$TRG_DATE/ "
read -p "ok? (y/N): " yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
#--------------------------------------
sshpass -p duser scp -r duser@dev:/add_disk2/archive/export_data/$DATA_ID/$TRG_DATE/ ./
sshpass -p $DBSVPWD ssh xuser@$DBSV "mkdir /add_disk6/work/$DATA_ID/$TRG_DATE"
sshpass -p $DBSVPWD scp -r ./$TRG_DATE/$DB_NAME/ xuser@$DBSV:/add_disk6/work/$DATA_ID/$TRG_DATE/
if [ -f ./$TRG_DATE/$DB_NAME/$DATA_ID*.gz ] ;then
sshpass -p $DBSVPWD ssh xuser@$DBSV "cd /add_disk6/work/$DATA_ID/$TRG_DATE/$DB_NAME;find $DATA_ID*.gz | xargs -n 1 tar -xvf"
fi
sshpass -p $CPSVPWD scp -r ./$TRG_DATE/$CP_NAME/db.tar.gz xuser@$CPSV:/app/1init_db/$DATA_ID/
RC=$?
if [ $RC = 0 ];then
sshpass -p $CPSVPWD ssh xuser@$CPSV "cd /xxx/$DATA_ID/;tar -xvf db.tar.gz"
fi
回答1件
あなたの回答
tips
プレビュー