新聞中心
Linux是一個(gè)流行的開(kāi)源操作系統(tǒng),被廣泛應(yīng)用于服務(wù)器環(huán)境中。作為服務(wù)器的操作系統(tǒng),Linux需要穩(wěn)定可靠地運(yùn)行,而守護(hù)程序則是保證系統(tǒng)穩(wěn)定的關(guān)鍵組成部分之一。守護(hù)程序可以在后臺(tái)運(yùn)行,定期執(zhí)行一些任務(wù)或者等待某些事件發(fā)生,并對(duì)系統(tǒng)資源進(jìn)行監(jiān)控,以便在出現(xiàn)故障時(shí)能夠快速相應(yīng)。本文將講解如何在Linux上設(shè)置守護(hù)程序。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁(yè)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、平遙網(wǎng)站維護(hù)、網(wǎng)站推廣。
一、什么是守護(hù)程序?
守護(hù)程序(daemon)是一種運(yùn)行在后臺(tái)的程序。在Linux系統(tǒng)中,守護(hù)程序通常運(yùn)行在系統(tǒng)初始化時(shí)啟動(dòng),并一直保持運(yùn)行狀態(tài),直到系統(tǒng)關(guān)閉或者守護(hù)程序被手動(dòng)關(guān)閉或者重新啟動(dòng)。
守護(hù)程序通常用于執(zhí)行某些任務(wù)或者等待某些事件的發(fā)生。例如,一個(gè)郵件服務(wù)器的守護(hù)程序可以等待郵件的到達(dá)并將其存儲(chǔ)在服務(wù)器上,一個(gè)Web服務(wù)器的守護(hù)程序可以等待客戶端的請(qǐng)求并提供相應(yīng)的服務(wù)。
二、如何創(chuàng)建守護(hù)程序?
在Linux系統(tǒng)中,我們可以使用系統(tǒng)提供的命令或者編寫(xiě)一些腳本來(lái)創(chuàng)建守護(hù)程序。一個(gè)基本的守護(hù)程序如下所示:
“`
#include
#include
#include
#include
#include
#include
#include
void daemonize(char *cmd)
{
int i, fd0, fd1, fd2;
pid_t pid;
struct sigaction sa;
// 1. Umask
umask(0);
// 2. Fork
if ((pid = fork())
exit(1);
} else if (pid != 0) { exit(0);
}
// 3. Setsid
setsid();
// 4. Signal handling
sa.sa_handler = SIG_IGN;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
if (sigaction(SIGHUP, &sa, NULL)
exit(1);
}
if ((pid = fork())
exit(1);
} else if (pid != 0) { exit(0);
}
// 5. Change directory
if (chdir(“/”)
exit(1);
}
// 6. Close file descriptors
close(0);
fd0 = open(“/dev/null”, O_RDWR);
fd1 = dup(0);
fd2 = dup(0);
// 7. Open syslog
openlog(cmd, LOG_CONS, LOG_DAEMON);
if (fd0 != 0 || fd1 != 1 || fd2 != 2) { syslog(LOG_ERR, “unexpected file descriptors %d %d %d”, fd0, fd1, fd2);
exit(1);
}
}
int mn(int argc, char **argv)
{
daemonize(argv[0]);
while (1) {
// Do something in background
sleep(10);
}
exit(0);
}
“`
這是一個(gè)簡(jiǎn)單的C語(yǔ)言程序,實(shí)現(xiàn)了守護(hù)程序的基本功能。程序的主要邏輯如下:
1. 使用umask函數(shù)設(shè)置文件權(quán)限掩碼為0,以免受到繼承自父進(jìn)程的文件權(quán)限掩碼的影響。
2. 調(diào)用fork函數(shù)創(chuàng)建一個(gè)新進(jìn)程,并使該新進(jìn)程成為父進(jìn)程的子進(jìn)程。如果fork失敗,則直接退出程序。如果是父進(jìn)程,則直接退出程序。
3. 調(diào)用setsid函數(shù)創(chuàng)建一個(gè)新的會(huì)話,并使該新會(huì)話成為進(jìn)程組組長(zhǎng)會(huì)話。因?yàn)闀?huì)話是一個(gè)進(jìn)程組的,所以在調(diào)用setsid函數(shù)之前,必須先創(chuàng)建一個(gè)新進(jìn)程,以免影響之前的進(jìn)程組。
4. 忽略SIGHUP信號(hào)。這樣,即使父進(jìn)程退出,子進(jìn)程也不會(huì)因?yàn)槭盏絊IGHUP信號(hào)而退出。
5. 調(diào)用chdir函數(shù)將當(dāng)前工作目錄更改為根目錄,以使當(dāng)前工作目錄不受其他進(jìn)程或設(shè)備的影響。
6. 調(diào)用close函數(shù)依次關(guān)閉標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤,并使用open函數(shù)將它們分別映射到/dev/null文件描述符上,以防止向終端輸出。
7. 調(diào)用openlog函數(shù)打開(kāi)系統(tǒng)日志,以便在系統(tǒng)日志中記錄日志消息。
在程序的mn函數(shù)中,我們調(diào)用daemonize函數(shù)來(lái)創(chuàng)建守護(hù)進(jìn)程,并在while循環(huán)中做一些后臺(tái)任務(wù)。
三、如何將守護(hù)程序設(shè)置為開(kāi)機(jī)啟動(dòng)?
一旦我們創(chuàng)建了一個(gè)守護(hù)進(jìn)程,我們也希望系統(tǒng)在每次啟動(dòng)時(shí)自動(dòng)啟動(dòng)它。在Linux系統(tǒng)中,我們可以通過(guò)將守護(hù)進(jìn)程的啟動(dòng)腳本復(fù)制到/etc/init.d目錄,然后使用update-rc.d命令將其添加到系統(tǒng)啟動(dòng)腳本中。例如,假設(shè)我們已經(jīng)創(chuàng)建了一個(gè)名為mydaemon的守護(hù)進(jìn)程,并將其啟動(dòng)腳本保存在/etc/init.d目錄下,那么我們可以按照以下步驟將其設(shè)置為開(kāi)機(jī)啟動(dòng):
1. 復(fù)制啟動(dòng)腳本到/etc/init.d目錄:
“`
sudo cp mydaemon /etc/init.d
“`
2. 使用update-rc.d命令將其添加到系統(tǒng)啟動(dòng)腳本中:
“`
sudo update-rc.d mydaemon defaults
“`
現(xiàn)在,守護(hù)進(jìn)程已經(jīng)設(shè)置為開(kāi)機(jī)啟動(dòng)了。
四、如何管理守護(hù)程序?
當(dāng)我們創(chuàng)建了一個(gè)守護(hù)進(jìn)程后,我們可能需要監(jiān)控它的運(yùn)行狀態(tài)、停止它的運(yùn)行、重新啟動(dòng)它等。在Linux系統(tǒng)中,我們可以使用以下命令來(lái)管理守護(hù)進(jìn)程:
1. 使用ps命令查看守護(hù)程序運(yùn)行狀態(tài):
“`
ps aux | grep mydaemon
“`
這條命令將列出所有正在運(yùn)行的mydaemon守護(hù)進(jìn)程的信息。
2. 使用kill命令停止守護(hù)程序:
“`
sudo kill [pid]
“`
這條命令將停止指定pid的守護(hù)進(jìn)程。
3. 使用service命令重新啟動(dòng)或停止守護(hù)程序:
“`
sudo service mydaemon restart
sudo service mydaemon stop
“`
這些命令將重新啟動(dòng)或停止mydaemon守護(hù)進(jìn)程。
五、
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專(zhuān)注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220如何在Linux下用c語(yǔ)言創(chuàng)建守護(hù)進(jìn)程并監(jiān)控系統(tǒng)運(yùn)行期間的所有進(jìn)程
可以分三步來(lái)做:
做兩個(gè)簡(jiǎn)單的鉛信守護(hù)進(jìn)程,并能正常運(yùn)行
監(jiān)控進(jìn)程是否在運(yùn)行
啟襪悶動(dòng)進(jìn)程
綜合起來(lái)就可以了,代碼如下:
被監(jiān)控進(jìn)程thisisatest.c
#include
#include
#include
#include
#include
#include
#include槐好輪
#include
void init_daemon()
Linux下怎么查看某個(gè)守護(hù)進(jìn)程或者所有的守護(hù)進(jìn)程?
命令ps
查看守候進(jìn)程的命令可以使用ps完成。
進(jìn)程一般分為交互進(jìn)程、批處理進(jìn)程和守護(hù)進(jìn)程(daemons)三類(lèi)。值得一提的是守護(hù)進(jìn)程總是活躍的,一般在后臺(tái)運(yùn)行,守護(hù)進(jìn)程一般由系統(tǒng)在開(kāi)機(jī)時(shí)通過(guò)腳本自動(dòng)激活啟動(dòng)或由超級(jí)管理用戶root來(lái)啟動(dòng)。比如在Fedora或Redhat中,我們可以定義httpd服務(wù)器的啟動(dòng)腳本的運(yùn)行級(jí)別,此文件位于/etc/init.d目錄下,文件名是httpd,/etc/init.d/httpd 就是httpd服務(wù)器的守護(hù)程序,當(dāng)把它的運(yùn)行級(jí)別設(shè)置為3和5時(shí),當(dāng)系統(tǒng)啟動(dòng)時(shí)橡物,它會(huì)跟著啟動(dòng)。
# chkconfig –level 35 httpd on
由于守護(hù)進(jìn)程是一直運(yùn)行著的,所以它所處的狀態(tài)是等待請(qǐng)求處理任務(wù)。例如通常大網(wǎng)站的Apache服務(wù)器都在運(yùn)行,等待著用戶來(lái)訪問(wèn),也就是等待著任務(wù)處理。羨數(shù)
Linux服務(wù)器在啟動(dòng)時(shí)需要啟動(dòng)很多系統(tǒng)服務(wù),它們向本地和網(wǎng)絡(luò)用戶提供了Linux的系統(tǒng)功能接口,直接面向應(yīng)用程序和用戶。提供這些服務(wù)的程序是由運(yùn)行在后臺(tái)的守護(hù)進(jìn)程來(lái)執(zhí)行的。守護(hù)進(jìn)程是生存期長(zhǎng)的一種進(jìn)程。它們獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。它們常常在系統(tǒng)引導(dǎo)裝入時(shí)啟動(dòng),在系統(tǒng)關(guān)閉時(shí)終止。Linux系統(tǒng)有很多守護(hù)進(jìn)程,大多數(shù)服務(wù)器都是用守護(hù)進(jìn)程實(shí)現(xiàn)的。同時(shí),守護(hù)進(jìn)程完成許多系統(tǒng)任務(wù),比如,作業(yè)規(guī)劃進(jìn)程crond、打印進(jìn)程lqd等。有些書(shū)籍和資料也把守護(hù)進(jìn)程稱(chēng)為”服務(wù)”。選擇運(yùn)行哪些兄如首守護(hù)進(jìn)程,要根據(jù)具體需求決定。查看系統(tǒng)可以提供的守護(hù)進(jìn)程對(duì)應(yīng)的服務(wù),打開(kāi)一個(gè)終端以root權(quán)限運(yùn)行ntsysv命令。
ps 命令………..
最簡(jiǎn)單的.
ps aux 就能查看所有進(jìn)程
艸··這個(gè)墳挖的··········
關(guān)于linux 設(shè)置 守護(hù)程序的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)【028-86922220】值得信賴(lài)的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌建站設(shè)計(jì),成都高端網(wǎng)站制作開(kāi)發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營(yíng)銷(xiāo)讓企業(yè)網(wǎng)站產(chǎn)生價(jià)值。
網(wǎng)頁(yè)題目:如何在Linux上設(shè)置守護(hù)程序?(linux設(shè)置守護(hù)程序)
網(wǎng)頁(yè)URL:http://m.fisionsoft.com.cn/article/dhdipgh.html


咨詢(xún)
建站咨詢(xún)
