バックグラウンドでスクリプトを実行するためにコマンドの最後に「&」を使用しようとしましたが、うまくいかないようです。
これが私が直面した問題です。有料シミュレーションソフトウェアを使用するために、プロバイダは、ライセンスアクセスを有効にする特定のスクリプトを実行するように指示しました。私はこれを開いて他の端末でソフトウェアを起動します(スーパーコンピューティングクラスタを使用しているため、GUIなしでバッチモードで)。
問題は、ヘッドノード(sshを介して接続)のスケジューラにのみスクリプトを送信でき、タスクがコンピューティングノードの1つに渡されることです。そのため、ソフトウェアを実行するために新しい端末を起動するのではなく、「&」を使用して提供されたスクリプトをバックグラウンドで実行してみました。これはうまくいきませんでした。この方法では、ライセンスサーバーへの接続が終了するようです。
./script1.sh &
使用
xterm -e sh script1.sh
別の端末で開くと、次のエラーが発生します。
xterm: Xt error: Can't open display:
xterm: DISPLAY is not set
どんな助けでも大変感謝します。
ベストアンサー1
あなたが提出した仕事は、これら2つのことをすべて実行することであるべきです。
#!/bin/sh
license </dev/null >license.out 2>&1 &
license_pid=$!
simulator
kill $license_pid
wait $license_pid
これにより、ライセンスプロセスの標準出力と標準エラーがファイルに保存されるため、tail
問題がある場合に通知する内容を確認できます。