フォアグラウンドで起動したシェルスクリプトを、途中から
自動的に
バックグラウンドに移行させる方法はないでしょうか。
ユーザーが操作するのなら、もちろん
フォアグラウンドで起動→Ctrl Z で中断→jobsでジョブ番号を確認→bg %[ジョブ番号]
という手順でできることは知っていますが、
シェルスクリプトが特定の段階まで処理したら自動的に
バックグラウンドに移行するようにしたいのです。
たとえば、
#!/bin/sh
echo "パラメータを入力してください"
read param
echo "ここからバックグランドに移行します"
#(*)
# ここからバックグラウンドに移行して
# 処理を行う
(バックグランドでやりたい処理)
#
exit
という感じで、処理に必要なパラメーターをターミナルから入力
したいので、最初はフォアグラウンドで起動する必要がありますが、
入力が終わったらあとは邪魔なのでバックグラウンドに回したいのです。
それなら起動時の引数としてパラメーターを与えればいい、と言われ
そうですが、パラメーターの数が不定の場合も考えているので、
ターミナル入力が必要なのです。
(*)の部分に
jobs; bg %1
などと入れてみましたが
line 17: bg: no job control
と怒られるだけで、バッググラウンドにはなりませんでした。
指定したPIDのプロセスをバックグラウンドにするような
コマンドでもあればうまくいきそうですが、そういう
コマンドはないようで、手詰まり状態です。
何かうまい方法がありましたらご教示下さい。
なお、baシェルやCシェルではなく、一番基本的な
Bourne Shell で使えるような方法をお願いします。
また、できるだけディストリビューションや
OS(Linux、BSD、Solarisなど)の違いにも依存しない
方法をお願いしたいと思います。
No.2
- 回答日時:
バックグランドにしたい処理を別シェルにして、バックグランドで起動すればいいのでは?
ありがとうございます。
その方法でテストして、一応はうまくいきました。
でもやはり、ファイルの数を増やしたくないことと、
不定数パラメーターの引き渡しが面倒な点で,
一つのスクリプトで完結する方法の方が望ましいです。
No.3ベストアンサー
- 回答日時:
>無視されるようです。
無視されるのではなく、バックグラウンドで処理しているんですよね?
#!/bin/sh
echo "a";
(sleep 5 ; echo "b" )&
echo "c";
この回答への補足
>無視されるのではなく、
あぁっ! ……(゜ロ゜;)
そのようです。sleep だけバックグラウンドに
回しても意味がなかったですね(^^ゞ
ご教示の例のような、複数のコマンドをカッコで
まとめてバックグラウンドに回すという方法は初めて知りました(^^ゞ
そんなことができたんですね。
もしかしてこれって関数化と同じ?
というわけで、バックグラウンドに回したい処理を
関数にまとめて、関数を&つきで呼び出してみたところ
うまく行きました。
今回は関数をバックグラウンドで実行する方法で行こうと思います。
ありがとうございました。
No.4
- 回答日時:
バックグラウンドじゃないけど、screenコマンドを使えば、とりあえず、コンソールとプロセスを切り離せる。
でも、どうしてバックグランドにしたいの?
どうしてもバックグラウンドにしなければいけない理由が分からん。
別のterminal立ち上げとけばいいんじゃないの。
ありがとうございます。
screenコマンドも知りませんでしたが、いろいろと便利そう
なコマンドですね。あとで使い方を調べておきます。
>別のterminal立ち上げとけばいいんじゃないの。
まあそう言われればその通りなんですが(^^ゞ
個人的な趣味ですが、
・デスクトップになるべく余計なアイコンやウインドウを置きたくない
(タスクバーもランチャーも使ってないくらいですから)
・コンソール画面でも使いたい
などの要望もあるもので(^^ゞ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- ライフスタイル・ヘルスケア WIN10 スタートアップとバックグラウンドアプリについて教えてください 3 2022/05/15 16:49
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- Windows 10 MicrosoftIMEでトラブル、助けてください m(_._)m 4 2023/05/16 14:11
- iPhone(アイフォーン) iPhone 14のバッテリー。 4 2023/07/19 20:41
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Windows 10 windowsの起動パスワードについて 1 2022/08/15 10:19
- その他(プログラミング・Web制作) vbaで座標を指定してコマンドプロンプト画面を表示させる。 1 2023/01/09 16:06
- その他(Microsoft Office) 1の行を固定した上でVBAを用いて日付順に自動並べ替え 2 2022/06/06 15:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
export と set は違うの?
-
msys(cygwin)で、シェルスクリ...
-
Cシェル内でBシェルの様な関数...
-
シェルスクリプトに関する問題...
-
Solarisでデフォルト環境変数の...
-
違いについて
-
telnetの制限
-
シェルとシェルの間で環境変数...
-
JAVA_HOMEを設定したい
-
xtermのファイルの消し方について
-
Thunderbirdで既読にしても、シ...
-
FreeBSDのログインシェルshの$H...
-
バックスラッシュの意味がわか...
-
lsコマンド部分一致方法
-
iqoo neo 9と言うスマホがある...
-
Dirコマンドでフォルダ内ファイ...
-
TOPコマンドで表示するCPU使用...
-
UNIX コマンドにおける # や円...
-
SONYの音楽ソフト「x-アプリ」...
-
空きIPアドレスを探す方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Cシェル内でBシェルの様な関数...
-
export と set は違うの?
-
ターミナルが全く入力できない
-
ubuntuの端末の左にカレントデ...
-
シェルスクリプトで #!/bin/sh ...
-
.cshrc ファイルについて
-
バックスラッシュの意味がわか...
-
シェル 会話形式でエンターキ...
-
『存在するかどうか分からない...
-
シェルスクリプトに関する問題...
-
lsコマンド部分一致方法
-
シェルスクリプトのbashとperl...
-
シェル(ksh)で変数にある文字列...
-
mac os x10.6.4のターミナルでp...
-
Linuxのファイル禁止文字
-
Solarisでデフォルト環境変数の...
-
ps -aのセッションリーダとは
-
csh (tcsh)での環境変数の長さ...
-
Cシェルでのファイルからの入...
-
tcshなのにスクリプト構文中のs...
おすすめ情報