• 締切済み

24時間以上たった、プロセスの起動日時を調べる方法

24時間以上たった、プロセスの起動日時を調べる方を教えて下さい。 以下のようにすれば、24時間以内のプロセス起動に日時は、わかるのですが、24時間以上たったものは、日付はでますが、時間が『?』となります。何か、良い知恵を貸して下さい。 ps -ef | grep プロセスID

みんなの回答

  • gaktank
  • ベストアンサー率65% (23/35)
回答No.1

「/proc/プロセスID」ディレクトリの作成日時が そのままプロセス起動日時となるので、 「ls -ld」で見ればいいと思います。 なお、lsは6ヶ月以前になると時間を表示してくれず、 年表示になってしまいます。この場合は 「tar cf - /proc/PID/cwd | tar tvf -」 とかするとちゃんと時間が見れます。 秒単位まで知りたい場合、作成時間を秒まで見る手段が Solaris標準コマンドで用意されていないので、 C関数のfstatus()を使って取得した秒を表示するCソースを 作ってコンパイルすれば可能です。 質問者さんの使用OSが書かれていませんが、 Solaris7以降であれば/procが存在しているので 上記の方法でいけると思います。 (Solaris8、Solaris9で確認しました)

05201707SS
質問者

お礼

遅くなりました。ご丁寧な回答ありがとうございます。使用していたのは、Solaris9です。

関連するQ&A

  • プロセスを複数起動する方法

    プロセス数の上限監視の検証を行うことになり、上限値以上のプロセス数を 起動させる必要が生じました。 具体的なプロセスは ・httpd (上限:200) ・ntpd (上限:1) ・crond (上限:1) ・HeartBeat (上限:6) の4つです。このうち、httpdについてはhttpd.conf内のStartServers及び MinSpareServersの値を変更することで解決しました。 しかし後3つのプロセスについて、プロセス数を増やす方法がわかりません。 尚、上限監視のロジックはps -ef | grep [プロセス名]で行数をカウントするという ものですので、psコマンドで表示されればゾンビでも何でも構いません・・ 宜しくご教示お願いいたします。

  • プロセスIDからプロセスの有無を確認する方法

    PHPのCLIからの実行で排他制御を行おうと思い、ある程度出来てきたのですが、保存しておいたプロセスIDからプロセスの有無を確認する方法が分かりませんでした。 簡単な方法としてはsystemやexecを使用して ps -ef|grep xxxx などとすれば良いかと思うのですが、grepそのものが引っ掛かってしまったりしてあまり美しくありません。リファレンスを一通り読んで関数を探してみたのですが適切な関数が見当たりませんでした。 何か良い方法をご存知の方がいらっしゃいましたらご教示頂けますでしょうか。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 実行中のプロセス数をカウントしたい

    ネットで以下コマンドを見つけて実行しました。 ps -ef | grep -v grep | grep httpd 実行結果は/usr/sbin/htpdが9行表示 この9行をカウントしたい為、 ネットで以下コマンドを見つけて実行しました。 ps -ef | grep -v grep | grep httpd | wc 実行結果は『9 72 576』が表示 上記の結果で9のみを表示させるコマンドがあれば 教えていただけないでしょうか。 また、実際にカウントしたいプロセスは以下例のように 半角スペースと()をふくんでおり 上記httpdのようにうまくいきませんでした。 例:test (rei) 半角スペースと()を含んだプロセス数をカウントするコマンドがあれば 教えていただけないでしょうか。

  • プロセスが起動中かどうかを判定するコマンドはありますか?

    あるプログラムを起動したとします。 psコマンドで起動中のプロセス番号を知ることができるのはわかりますが、 プログラム起動中かどうかを判定するコマンドとかあるでしょうか。 たとえば、 >あるコマンド プロセスID のようにプロセスIDを引数として実行すると、プロセス起動中かどうか判定できるような。。。 ご存知な方ご教授おねがいします。

  • logoutしたとき消えるプロセスは誰が消してるの?

    telnetなどでログインして プロセスを動作させて、ログアウトすると 動作させていたプロセスが消えるのですが、 誰がそのプロセスにシグナルを送っているのでしょうか? OSはsolarisを使っています。 シェルが子供を消しているのかと思ったのですが、 以下の動作をみるとそうでないみたいで・・ telnet .... $ $sh $sleep 10000 & 1234(←sleepのPID) $kill [shのPID] $ ps -eo pid,ppid,args | grep 1234 1234 1 sleep 1000 $exit telnet .... $ $ ps -eo pid,ppid,args | grep 1234 $ない

  • javaのプロセス起動について

    UNIXで例えば以下のようなコマンドでjavaのプロセスを停止するとします。 ps -eo pid,comm | awk '$2=="java" {print "kill -9" $1}' 逆にjavaのプロセスをコマンドで起動する方法はありますか?

  • プロセスの切り方

    質問です。 今会社(このカテゴリーをご覧になっていらっしゃる方でご存じの方が いると思いますが)でシェルを作成しているのですが、 時たまとんでもないミスをして、シェルが止まらなくなるときがあります。 その時即座に、ps-efでプロセス番号を割り出してkillしているのですが、 以前にミスったと思われるプロセスが残っていて困っています。 (実行時間が0:00となっているので、素人認識で大丈夫だと 思っているのですが、気になるのでkillで切ろうとすると所有者ではありません と言われてしまいます) どうすれば、こういったプロセスが切れるのかお教え下さい。

  • tomcat psコマンドでスレッドのプロセスが見れません。。

    はじめまして。 JDK1.4.2-13 + tomcat5.0.28 + RHEL3でWEBアプリ環境を 構築しています。 Linux上ではJavaの1スレッドが1プロセスとして 実行されていると思いますが、この1スレッドをpsコマンドが 見た時になぜか表示されません。tomcat本体のjavaプロセスは 確認できるのですがスレッドに当たるプロセスが見えません。 topコマンドでは処理させた時にjavaというプロセスが 処理に応じて上位に表示されるのですが、この時に、 ps -ef | grep java でJavaプロセスを確認しようとしてもどうしても 見ることができません。。 linux上でtopコマンドとpsコマンドでは表示されるプロセス に違いがあるのでしょうか? WEBで調べてみてもみなさんpsコマンドでtomcatのJavaスレッド プロセスが確認できているようなので質問させて頂きました。 宜しくお願いします。

    • ベストアンサー
    • Java
  • Powershell プロセス二重起動

    PowerShell初心者です。 自身で起動中のスクリプトと同じコマンドで実行しているプロセスを検知し、他方のプロセスをkillしようと考えております。要は二重起動のチェックをしたいです。 現在コマンドラインで確認しているのですがどうもうまくいきません。 やろうとしている操作は以下です。 (1)ファイルにプロセス情報を出力。 PS C:\> $tempfile = "C:\pswork\servicemon\temp.log" PS C:\> Get-WmiObject win32_process ` | select Name, ProcessId, CommandLine ` | sort Name ` | Format-Table -AutoSize ` | Out-File -FilePath $tempfile -width 1000 (2)自分のPID以外のプロセス情報を取得 PS C:\> $mypid = $PID PS C:\> $killpidtmp = Get-Content $tempfile | Select-String -Pattern ".*powershell.exe.*svmon131_loop.*" |Select-String -NotMatch -Pattern "\s$mypid\s" PS C:\> echo $killpidtmp powershell.exe 2024 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\pswork\servicemon\svmon131_loop.ps1 (3)splitでプロセス番号のみを取得。 PS C:\> $killpid = echo $killpidtmp |% {$($_-split(" "))[1]} PS C:\> echo $killpid ★ここがうまく取得できません。空白しか取得できていません。 (4)最終的には取得したPIDでプロセスを終了。 PS C:\pswork\servicemon> Stop-Process -ID $killpid Bシェルで同様のスクリプトがあったので、それを参考にPowerShellで書こうとしているので、 そもそも無理があるのかもしれないかと考えています。 上記の方法でなくてもよいので、二重起動のチェックと該当プロセスの停止で参考となる情報があれば教えて頂きたいです。

  • シェルについて

    以下のような「プロセスをkillするシェル」を作成しています。 そこで質問なのですが、プロセスが死んだら繰り返しを抜ける ようにしたいと考えているのですが、どのようにすれば実現できるのか 分かりません。 どなたかご存知の方がいらっしゃれば教えていただきたいです。 申し訳ありませんが、宜しくお願いいたします。 #!/bin/csh # 変数定義 set cnt = 3 #リトライカウンタ set i = 1 # ループカウンタ #aaaをkill while ( $i <= $cnt ) ps -ef | grep -v grep | grep aaa | \ nawk '{if(match($NF,"aaa") == 1){system("kill " $2);print "kill: " $2}}' ps -ef | grep -v grep | grep aaa| \ nawk '{if(match($NF,"aaa") == 1){system("kill -9 " $2);print "kill: " $2}}' @ i = $i + 1 end