新聞中心
守護(hù)進(jìn)程是一種可以在后臺運(yùn)行并監(jiān)聽特定服務(wù)或系統(tǒng)事件的程序。在 Linux 系統(tǒng)中,很多服務(wù)和應(yīng)用程序都是以守護(hù)進(jìn)程的方式運(yùn)行的,如 Apache、 Nginx、MySQL 等等。通常情況下守護(hù)進(jìn)程運(yùn)行的用戶是 root,但是為了安全起見,我們需要將其運(yùn)行用戶修改為普通用戶。那么,有哪些呢?

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)安丘,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
1.修改守護(hù)進(jìn)程配置文件
修改守護(hù)進(jìn)程的配置文件,可以通過編輯配置文件的方式將其運(yùn)行用戶修改為其他用戶。以常見的 Nginx 為例,在 /etc/nginx/nginx.conf 文件中將 user 配置項(xiàng)修改為所需用戶即可。如下:
“`
user nginx;
“`
修改為:
“`
user test;
“`
2.使用 su 命令或者 sudo 命令
su 命令可以切換到其他用戶,運(yùn)行守護(hù)進(jìn)程程序。當(dāng)然,也可以使用 sudo 命令以其他用戶身份運(yùn)行程序,這種方式比 su 命令更加安全。比如,當(dāng)要用 test 用戶運(yùn)行 Nginx 時,可以使用 su 命令:
“`
su – test
nginx
“`
或者使用 sudo 命令:
“`
sudo -u test nginx
“`
3.使用 systemd 用戶單位
systemd 是 Linux 系統(tǒng)中常用的系統(tǒng)和服務(wù)管理器,它可以啟動和管理守護(hù)進(jìn)程、系統(tǒng)服務(wù)等等。在 systemd 中,可以使用用戶單位來管理守護(hù)進(jìn)程的運(yùn)行用戶。以 Nginx 為例,在 /etc/systemd/system/multi-user.target.wants/nginx.service 中,將 ExecStart 配置項(xiàng)修改為所需用戶即可。如下:
“`
ExecStart=/usr/in/nginx -g ‘daemon on; master_process on;’ -c /etc/nginx/nginx.conf -u test
“`
其中 -u 參數(shù)指定 Nginx 的運(yùn)行用戶。
4.使用 supervisord
supervisord 是一種進(jìn)程控制器,可以用來管理和監(jiān)控進(jìn)程。它可以將進(jìn)程以守護(hù)進(jìn)程的方式運(yùn)行,并指定運(yùn)行用戶。以 Nginx 為例,在 /etc/supervisord.conf 配置文件中,將 Nginx 進(jìn)程的配置項(xiàng)修改為如下:
“`
[program:nginx]
command=/usr/in/nginx -g ‘daemon on; master_process on;’
directory=/etc/nginx/
user=test
autostart=true
autorestart=true
startsecs=10
stopwtsecs=10
stopasgroup=true
killasgroup=true
redirect_stderr=true
“`
其中 user 參數(shù)指定運(yùn)行用戶。
主要有:修改守護(hù)進(jìn)程配置文件、使用 su 命令或者 sudo 命令、使用 systemd 用戶單位、使用 supervisord。對于不同的場景和需求,選擇不同的方式可以幫助我們更加有效地管理和維護(hù)守護(hù)進(jìn)程。同時,也要注意守護(hù)進(jìn)程本身的安全性,避免因?yàn)闄?quán)限問題導(dǎo)致系統(tǒng)或數(shù)據(jù)的損失。
相關(guān)問題拓展閱讀:
- 如何在Linux下用c語言創(chuàng)建守護(hù)進(jìn)程并監(jiān)控系統(tǒng)運(yùn)行期間的所有進(jìn)程
- Linux 下的守護(hù)進(jìn)程是怎么保證它一直運(yùn)行的
如何在Linux下用c語言創(chuàng)建守護(hù)進(jìn)程并監(jiān)控系統(tǒng)運(yùn)行期間的所有進(jìn)程
守護(hù)進(jìn)程最重要的特做配性是后模如臺運(yùn)行。在這一點(diǎn)上DOS下的常駐內(nèi)存程純碼指序TSR與之相似。其次,守護(hù)進(jìn)程必須與其運(yùn)行前的環(huán)境隔離開來。這些環(huán)境包括未關(guān)閉的 文件描述符,控制終端,會話和進(jìn)程組,工作目錄以及文件創(chuàng)建掩模等。這些環(huán)境通常是守護(hù)進(jìn)程從執(zhí)行它的父進(jìn)程(特別是shell)中繼承下來的。最后,守 護(hù)進(jìn)程的啟動方式有其特殊之處。它可以在Linux系統(tǒng)啟動時從啟動腳本/etc/rc.d中啟動,可以由作業(yè)規(guī)劃進(jìn)程crond啟動,還可以由用戶終端 (通常是shell)執(zhí)行。
可以分三步來做:
做兩個簡單的守護(hù)進(jìn)程,并能正常運(yùn)行
監(jiān)控進(jìn)程是否在運(yùn)行
啟動進(jìn)程
綜合起來就可以了,代碼如下:
被監(jiān)控進(jìn)程thisisatest.c(來自):
#include
#include
#include
#include
#include
#include
#include
#include
void init_daemon()
{
int pid;
int i;
pid=fork();
if(pid0) //父進(jìn)程退出
exit(0);
setsid(); //使子進(jìn)程成為組長
pid=fork();
if(pid>0)
exit(0); //再次退出,使進(jìn)程不是組長,這樣進(jìn)程就不會打開控制終端
else if(pid=0)
{
time(&t);
fprintf(fp,”current time is:%s\n”,asctime(localtime(&t))); //轉(zhuǎn)換為本地時間輸出
fclose(fp);
}
}
return;
}
監(jiān)控進(jìn)程monitor.c:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFSZ 150
void init_daemon()
{
int pid;
int i;
pid=fork();
if(pid0) //父進(jìn)程退出
exit(0);
setsid(); //使子進(jìn)程成為組長
pid=fork();
if(pid>0)
exit(0); //再次退出,使進(jìn)程不是組長,這樣進(jìn)程就不會打開控制終端
else if(pid=0)
{
count = does_service_work();
time(&t);
if(count>0)
fprintf(fp,”current time is:%s and the process exists, the count is %d\n”,asctime(localtime(&t)), count); //轉(zhuǎn)換為本地時間輸出
else
{
fprintf(fp,”current time is:%s and the process does not exist, restart it!\n”,asctime(localtime(&t))); //轉(zhuǎn)換為本地時間輸出
system(“/home/user/daemon/thisisatest”); //啟動服務(wù)
}
fclose(fp);
}
}
return;
}
具體CMD命令:
cc thisisatest.c -o thisisatest
./thisisatest
cc monitor.c -o monitor
./monitor
tail -f testfork3.log — 查看日志
Linux 下的守護(hù)進(jìn)程是怎么保證它一直運(yùn)行的
在Linux/UNIX系統(tǒng)引導(dǎo)兆清的時候會開啟很多服務(wù),這些服務(wù)稱為守護(hù)進(jìn)程(也叫Daemon進(jìn)程)。守護(hù)進(jìn)程是脫離于控制終端并且在后臺周期性地執(zhí)行某種任務(wù)或等待處理某些事件的進(jìn)殲吵程,脫離終端是為了避免進(jìn)程在執(zhí)行過程中的信息在氏猜侍任何終端上顯示并且進(jìn)程也不會被任何終端所產(chǎn)生的中斷信息所終止。
linux 以其他用戶 運(yùn)行 守護(hù)進(jìn)程的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux 以其他用戶 運(yùn)行 守護(hù)進(jìn)程,Linux 守護(hù)進(jìn)程的其他用戶運(yùn)行方式,如何在Linux下用c語言創(chuàng)建守護(hù)進(jìn)程并監(jiān)控系統(tǒng)運(yùn)行期間的所有進(jìn)程,Linux 下的守護(hù)進(jìn)程是怎么保證它一直運(yùn)行的的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站營銷推廣找創(chuàng)新互聯(lián),全國分站站群網(wǎng)站搭建更好做SEO營銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價格厚道。提供成都服務(wù)器托管租用、綿陽服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽服務(wù)器機(jī)房服務(wù)器托管租用。
文章名稱:Linux 守護(hù)進(jìn)程的其他用戶運(yùn)行方式 (linux 以其他用戶 運(yùn)行 守護(hù)進(jìn)程)
本文地址:http://fisionsoft.com.cn/article/dhgphei.html


咨詢
建站咨詢
