phpのexecコマンドでシェルスクリプトを実行したさいにずっとロードが入り終了しません。
シェルスクリプトは自分のサーバーのdockerコンテナと別のサーバーのdockerコンテナとを立ち上げるのですが、立ち上がってはいるのでシェルスクリプトは動いています。
その後、自分のサーバーのdockerコンテナをstopすると実行結果が表示されます。
自分のサーバーのコンテナを終了することなく,すぐに実行結果を得るにはどうしたら良いかわかりません。
phpのバージョンは7.4
amazonlinux2を使用しています
php
1<?php 2exec ('sh gotty.sh', $output); 3print_r ($output); 4?>
shellscript
1#!/bin/bash 2P=7999 3status=open 4while [ "$status" = "open" ] 5do 6 P=`expr $P + 1` 7 status=$(nmap -p $P localhost | grep "/tcp" | awk '{print $2}' ) 8done 9if [ $P = 8100 ]; then 10 echo "アクセス過多" 11else 12 echo $P 13 nohup docker run -i --rm --name $P -p $P:8080 gotty:prod /tmp/pgotty.sh & 14 nohup sudo ssh -i ~/.ssh/mykey ec2-user@xxx.xxx.xxx.xxx "docker run -i -d --rm --name $P -p $P:22 ssh:01 " & 15fi 16
[ec2-user@ip-xxx.xxx.xxx.xxx html]$sh gotty.sh 8003 [ec2-user@ip-xxx.xxx.xxx.xxx html]$ nohup: 入力を無視し、出力を `/home/ec2-user/nohup.out' に追記します nohup: 出力を `/home/ec2-user/nohup.out' に追記します
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/12 12:20