我有一個腳本,它使用killproc和procofpid命令並在64位suse上執行正常。但是當我在32位redhat上執行腳本時,我發現上述命令不存在。linux上killproc和pidofproc
我沒有32位Suse和64位redhat機器來測試我的腳本。
我的猜測是正確的,在64位紅帽上述命令應該可用? 還是上面的Suse和redhat特有的命令?
感謝
我有一個腳本,它使用killproc和procofpid命令並在64位suse上執行正常。但是當我在32位redhat上執行腳本時,我發現上述命令不存在。linux上killproc和pidofproc
我沒有32位Suse和64位redhat機器來測試我的腳本。
我的猜測是正確的,在64位紅帽上述命令應該可用? 還是上面的Suse和redhat特有的命令?
感謝
這些命令不太可能是可移植的。其實這是我第一次聽說他們 - 但我想你的問題是與名稱的過程,而不是PID。
檢查man pgrep
或man pkill
- 它們稍微便攜一點。它們是procps
包(其中ps
和top
來自)的一部分,並且應該適用於所有Linux變體。它們也可在Solaris上使用。
我覺得這些命令是DISTRIB細節:我從來沒有見過他們。 killproc應該是一種殺手,但procofpid應該做什麼?
在關於pidofproc的標題中,您可以在大多數Linux機器上的pidof下找到該命令。
我有同樣的問題,因爲你,它給了警告:
的pidof:在命令行無效的選項!
我改變了
"killproc -d 10 $cmd"
到
"kill -9 \`pidof $cmd\`"
killproc在RedHat Linux企業版5.4爲/etc/init.d/functions
的一部分,如果你需要它只是做
。 /etc/init.d/functions
在你的腳本加載外殼的功能,它可能是在redhat的其他版本,但多數民衆贊成我唯一擁有的那一刻,隨手
在Ubuntu中使用的那些被部分規範「Linux Standard Base」,並記錄在there。
這些命令是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
您的聲明'Redhat(可能是SUSE)沒有在LSB指定的位置定義它們是錯誤的。元軟件包'lsb-core-noarch'提供跨越LSB兼容發行版的文件'/ lib/lsb/init-functions'。只需使用分發包管理器進行安裝即可。 – Samveen 2017-03-29 11:10:44
@Samveen感謝您對「lsb-core-noarch」軟件包的說明和信息。 FWIW在Fedora 24上是'redhat-lsb-core'。如果您不確定運行時環境是否安裝了軟件包,並且您沒有能力或不希望強制安裝它,那麼腳本片段仍然很有用。 – Raman 2017-03-29 16:53:44
請檢查''提供''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
沒有,但'kill'和'pidof'是,這也是便攜。 – 2010-06-10 15:08:38