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

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

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

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

バックグラウンド処理

バックグラウンド処理とは、マルチタスク環境において、ユーザーに対して前面に表示させている処理の裏側で実行させる処理のことを呼びます。バックグラウンド処理を行う事によって、ユーザーが他の作業に携わることが可能となります。

Q&A

解決済

2回答

3976閲覧

ログアウト後も継続される処理の実行時間をファイルに出力したい

Asky

総合スコア17

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

バックグラウンド処理

バックグラウンド処理とは、マルチタスク環境において、ユーザーに対して前面に表示させている処理の裏側で実行させる処理のことを呼びます。バックグラウンド処理を行う事によって、ユーザーが他の作業に携わることが可能となります。

0グッド

0クリップ

投稿2018/07/04 07:52

前提・実現したいこと

nohupコマンドなどで、ログアウトしてもバックグラウンドでジョブが継続するようにしながら、
その処理時間をtimeコマンドで計測し、その結果を何らかのファイルに出力したいです。

例えば、
(time sleep 2) 2> sleep2.txt

(time sleep 2) >& sleep2.txt
を実行すると、
sleep2.txtの中身は以下のようになりましたが、

real 0m2.001s user 0m0.000s sys 0m0.002s sleep2.txt (END)

これを、ログアウトしてもジョブが継続するようにして、やりたいです。
(sleep 2はただの例で、もっと時間のかかる処理をやりたいです。)

発生している問題・エラーメッセージ

nohupを使ってみましたが、sleep2.txtの中身が、以下のようになってしまいました。
確かに時間が出力されましたが、
実現したいのは、timeの出力と同様の、
real, user, sysについての、1/1000 sec単位での出力なのです。

nohup: appending output to `nohup.out' 0.00user 0.00system 0:02.00elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+158minor)pagefaults 0swaps sleep2.txt (END)

該当のソースコード

以下の4つのコマンドを試しましたが、結果は同じでした。

nohup time sleep 2 >& sleep2.txt & nohup time sleep 2 > sleep2.txt & nohup time sleep 2 2> sleep2.txt & (nohup time sleep 2) 2> sleep2.txt &

試したこと

これらのサイトを参考に、上記の4つのコマンドを打ちましたが、うまくいきませんでした。

http://q.hatena.ne.jp/1361965120

http://md.atwired.com/?eid=1423677

https://orebibou.com/2015/07/nohup%E3%81%A7%E3%83%90%E3%83%83%E3%82%AF%E3%82%B0%E3%83%A9%E3%82%A6%E3%83%B3%E3%83%89%E3%82%B8%E3%83%A7%E3%83%96%E5%8C%96%E3%81%97%E3%81%9F%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E7%B5%82/

補足情報(FW/ツールのバージョンなど)

Ubuntu 16.04.4 LTS

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

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

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

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

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

guest

回答2

0

ベストアンサー

"nohup time ..." だと bash 組み込みの time ではなく、/usr/bin/time が実行されるので、出力形式が違うのでしょう。
以下のいずれかでどうでしょうか。

nohup bash -c "time sleep 2" >& sleep2.txt & (nohup bash -c "time sleep 2" >& sleep2.txt &) ((time sleep 2) >& sleep2.txt &)

投稿2018/07/04 10:20

TaichiYanagiya

総合スコア12146

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

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

Asky

2018/07/04 15:19

いずれでもうまくいきました!ありがとうございます!
guest

0

GNU screen や tmux などのターミナルマルチプレクサ上でスクリプトを動かし、デタッチした上でログアウト。
再度ログイン後、プロセスをアタッチしてやると、動きつづけているプロセスに復帰できます。

投稿2018/07/04 07:59

kazto

総合スコア7196

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

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

Asky

2018/07/04 08:19

初学者なもので、ターミナルマルチプレクサの存在を知りませんでした。少し調べて勉強してみます。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問