2010-06-10 47 views
7

我有一個腳本,它使用killproc和procofpid命令並在64位suse上執行正常。但是當我在32位redhat上執行腳本時,我發現上述命令不存在。linux上killproc和pidofproc

我沒有32位Suse和64位redhat機器來測試我的腳本。

我的猜測是正確的,在64位紅帽上述命令應該可用? 還是上面的Suse和redhat特有的命令?

感謝

+1

沒有,但'kill'和'pidof'是,這也是便攜。 – 2010-06-10 15:08:38

回答

4

這些命令不太可能是可移植的。其實這是我第一次聽說他們 - 但我想你的問題是與名稱的過程,而不是PID。

檢查man pgrepman pkill - 它們稍微便攜一點。它們是procps包(其中pstop來自)的一部分,並且應該適用於所有Linux變體。它們也可在Solaris上使用。

0

我覺得這些命令是DISTRIB細節:我從來沒有見過他們。 killproc應該是一種殺手,但procofpid應該做什麼?

在關於pidofproc的標題中,您可以在大多數Linux機器上的pidof下找到該命令。

-1

我有同樣的問題,因爲你,它給了警告:

的pidof:在命令行無效的選項!

我改變了

"killproc -d 10 $cmd" 

"kill -9 \`pidof $cmd\`" 
8

killproc在RedHat Linux企業版5.4爲/etc/init.d/functions

的一部分,如果你需要它只是做

。 /etc/init.d/functions

在你的腳本加載外殼的功能,它可能是在redhat的其他版本,但多數民衆贊成我唯一擁有的那一刻,隨手

6

這些命令是defined作爲Linux Standards Base(LSB)的一部分,如@AndreKR所述。

但是,在一些像Redhat(也可能是SUSE)的系統上,根據安裝的軟件包,這些函數可能不會在LSB指定的位置定義,即/lib/lsb/init-functions。而是在/etc/init.d/functions內定義。另外,在某些版本中,/etc/init.d/functions的Redhat變體缺少LSB定義的函數start_daemon。如果添加下面的代碼片段到你的腳本的頂部,它應該是在大多數分佈便攜/安裝:

if [[ -f /lib/lsb/init-functions ]]; then 
    . /lib/lsb/init-functions 
elif [[ -f /etc/init.d/functions ]]; then 
    . /etc/init.d/functions 
    # Pretend to be LSB-compliant 
    function start_daemon() { 
    daemon $* 
    } 
else 
    echo "Linux LSB init function script or Redhat /etc/init.d/functions is required for this script." 
    echo "See http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html" 
    exit 1 
fi 
+0

您的聲明'Redhat(可能是SUSE)沒有在LSB指定的位置定義它們是錯誤的。元軟件包'lsb-core-noarch'提供跨越LSB兼容發行版的文件'/ lib/lsb/init-functions'。只需使用分發包管理器進行安裝即可。 – Samveen 2017-03-29 11:10:44

+0

@Samveen感謝您對「lsb-core-noarch」軟件包的說明和信息。 FWIW在Fedora 24上是'redhat-lsb-core'。如果您不確定運行時環境是否安裝了軟件包,並且您沒有能力或不希望強制安裝它,那麼腳本片段仍然很有用。 – Raman 2017-03-29 16:53:44

+0

請檢查''提供''redhat-lsb-core'軟件包:您會注意到它提供了一個'lsb-core-noarch'功能,它是一個'meta package',正如我在我的評論中提到的([rpmfind info](https://www.rpmfind.net/linux/RPM/fedora/updates/24/x86_64/r/redhat-lsb-core-4.1-33.fc24.x86_64.html))。 – Samveen 2017-03-30 03:28:14