2016-05-07 11 views
0

2つのスクリプトをテストしています。スクリプトを手動で実行すると完全に実行されますが、別のスクリプトから実行されたときにコマンドが失われます

最初のスクリプトは、それが実行されるスクリプトがないと

#!/bin/sh 
screen -S Test_Screen -X stuff "cd /home/Test" 
sleep 1 
screen -S Test_Screen -X eval "stuff \015" 
sleep 1 
echo "Complete" 

を次のように私は、コマンドラインから実行した場合2つ目のスクリプトが完璧に実行されますされるが完全に実行されます

#!/bin/sh 
screen -dmS Test_Screen 
sleep 1 
sudo sh cd.sh 
echo "finished" 

とありますCDを画面内のディレクトリに挿入します。ただし、最初のスクリプトから実行する場合はになりません CDを画面内の正しいディレクトリに移動しますが、それでも "完了"が表示されます。

私はCentOSの6.7とGNU画面

任意のアイデアを最新のバージョンを使用していますか?

答えて

0

これはセッションのネストに問題があるようです。 最初のスクリプトでは、Test_Screenという名前のセッションを作成します。 2番目のスクリプトでは、-Sパラメータは画面に同じ名前のセッションを作成するよう指示します。これにより、画面が終了し、正しいディレクトリにcdが表示されなくなる可能性があります。

あなたはsudo sh cd.shの前でcdコマンドを移動しても動作するはず正しいscreenフラグを使用するだけ

stuff \015 
echo "Complete" 

を残して2番目のスクリプトからのものscreenの呼び出しを削除することができます。画面に、より現代的な代替のために

#!/bin/sh 
screen -dr Test_Screen -X stuff "cd /home/Test" 
sleep 1 
screen -dr Test_Screen -X eval "stuff \015" 
sleep 1 
echo "Complete" 

tmuxを見ています。

+0

情報をいただきありがとうございます。問題は実際にはCentos 6.7そのものでした。私たちはcentos 7に更新し、スクリプトは完全に実行されました。私は何が起こったのか分からないが、主なことは動作する – JLennon

0

これは本当に変わっています。投稿した後、私はcentos 6.7のハイパーVテスト環境でいくつかのことを試してみて、まったく同じ問題を抱えていました。しかし、後日、私たちはサービスプロバイダーを変更し、その過程でcentos 7にアップグレードしました。私は理由は分かりませんが、更新以来、スクリプトは完全に実行されており、実際には2つのスクリプトを1つに統合してより効率的にすることができました。誰かがなぜこのアップデートが修正されたのか分かっていれば、私に知らせることは自由です。

関連する問題