【发布时间】:2015-09-17 11:16:54
【问题描述】:
我想通过 tcl 中的名称给定的进程使用 pidof。我用过[exec pidof $proc_name ],但是总是返回错误:子进程异常退出。
我在某处读到 exec 总是将非零返回视为错误,因为 pidof 返回进程 ID 号。有谁知道是否有解决方法?提前致谢!
我想使用 pidof 是我想查看该进程是否正在运行,如果没有,我将重新启动该进程。
【问题讨论】:
-
如果我使用命令行 ps -C $proc_name ([exec ps -C $proc_name]),结果是一样的。
-
我有诸如“set rc [catch {exec pgrep $proc_name} ]”或“set rc set rc [catch {pidof $proc_name} ]”或“set rc [catch {exec ps -C $proc_name} ]”。无论进程是否正在运行,rc 总是得到值 1。所以我无法知道进程是否正在运行。它适用于这里的某些人,但不适用于我。它看起来像一个操作系统分布问题。我的操作系统是 centos "2.6.18-274.el5PAE #1 SMP"
-
我也看过这篇文章“stackoverflow.com/questions/2903354/…”。在bash下,它总是返回值1。有人有什么想法吗?
-
所以我的两台电脑的 bash 版本是 GNU bash,版本 4.1.2(1)-release (x86_64-redhat-linux-gnu) 和 GNU bash,版本 3.2.25(1)-发布 (i386-redhat-linux-gnu)
-
如果我有#!/bin/bash -e,它不会打印出任何东西。似乎脚本没有被执行。#!/bin/bash SERVICE=$1 ps -a | grep -v grep | grep $1 > /dev/null 结果=$? echo "退出代码:${result}" if [ "${result}" -eq "0" ] ;然后 echo "
date: $SERVICE 服务正在运行,一切都很好" else echo "date: $SERVICE 没有运行" fi