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

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


咨詢
建站咨詢
