質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

1653閲覧

Linuxコマンドでバックグラウンド実行する方法

encho

総合スコア182

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2020/04/09 12:06

編集2020/04/09 12:26

#Linuxコマンドでバックグラウンド実行がしたいです

今回行いたい処理として
awsEc2のWEBサーバーの接続→Javaアプリケーションの起動です。
どちらもフォアグラウンドでは問題なく動くことは確認できています。

#やってみたこと
調べたところ最後に&を付ければ良いと書いてあったので以下を実行

Linux

1#webサーバーの接続 2ssh -i key.pem ec2-user@ec2IPaddress.ap-northeast-1.compute.amazonaws.com & 3#Javaアプリの起動 4java -jar test.jar &

としてアプリケーションのURLにアクセスしましたが応答がありませんでした。
フォアグランドでは問題がなかったのでバックグラウンドでのコマンドに問題があると思うのですが
どこが問題であるのかがわかりませんでした。
何かアドバイスをいただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ssh -i key.pem ec2-user@ec2IPaddress.ap-northeast-1.compute.amazonaws.com &

コマンドを実行していません。
コマンドを実行するのであれば、ssh -i キー ユーザー@ホスト コマンドです。
上記は、ssh -i キー ユーザー@ホストしかないので、対話型シェルの起動になります。
#追記
なんとなく状況が分かった気がします。
「どちらも」と書いてあったので、「awsEc2のWEBサーバーの接続」と「Javaアプリケーションの起動」が別の話かと思っていたのですが、AWSのサーバーにsshでログインして、AWSサーバー上でJavaアプリケーションを動かしたいのですかね。

であれば、とりあえずの対処でいいなら、

sh

1ssh -i key.pem ec2-user@ec2IPaddress.ap-northeast-1.compute.amazonaws.com java -jar test.jar &

でしょうか。

投稿2020/04/09 12:21

編集2020/04/09 13:01
otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

encho

2020/04/09 12:25

バックグラウンドとフォアグランドでは異なるということでしょうか? フォアグラウンドではssh -i キー ユーザー@ホストでwebサーバーに接続できていたのですが。 この場合webサーバーにアクセスしたい場合のコマンドは何になるのでしょうか?
otn

2020/04/09 12:41

> バックグラウンドとフォアグランドでは異なるということでしょうか? 同じです。 「ssh -i キー ユーザー@ホスト」であれば、ホストに接続して対話型シェルを起動します。 そこまでは一緒です。 sshをフォアグラウンドで実行したのであれば、端末がリモートの対話型シェルに接続されているので、リモート側のコマンドを入力可能です。 リモート側のコマンドを入力してリモート側の作業を行い、それが終わったら、exit や logout とか ctrl-D をキーインしてリモートの対話型シェルに送ることで対話型シェルを終了して、sshも終了します。 sshをバックグラウンドで実行したのであれば、リモートの対話型シェルは入力待ちになり、ローカル側でsshがフォアグラウンドになるまでそのままです。 意味わかりますかね?
otn

2020/04/09 12:43

もしかして、起動したいjavaアプリケーションは、ローカルで実行するのではなくて、リモート側で実行したいのですか?
Takumiboo

2020/04/09 13:31

おそらくそうでしょうね。「&」なしのsshコマンドでログインして、サーバ側のシェルに入った後に「&」付きのjavaコマンドを実行すればいいんじゃないかと。
encho

2020/04/10 05:39

ご回答ありがとうございます。 無事にバックグラウンドで起動することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問