日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
Linux守護進程腳本:自動化管理服務(linux守護進程腳本)

Linux是一個充滿活力和快速變化的操作系統(tǒng)。在新的應用程序和軟件,并不是每時每刻都處于活躍狀態(tài)。在許多情況下,您需要將應用程序設置為在服務器重啟后自動運行,以確保服務的穩(wěn)定性和持久性。這可以通過使用守護進程腳本來實現。

創(chuàng)新互聯公司自2013年起,我們提供高端網站建設、成都微信小程序、電商視覺設計、成都app開發(fā)及網絡營銷搜索優(yōu)化服務,在傳統(tǒng)互聯網與移動互聯網發(fā)展的背景下,我們堅守著用標準的設計方案與技術開發(fā)實力作基礎,以企業(yè)及品牌的互聯網商業(yè)目標為核心,為客戶打造具商業(yè)價值與用戶體驗的互聯網+產品。

守護進程是Linux系統(tǒng)中運行在后臺的一類特殊進程,通常是以root權限運行的進程。它的作用是在系統(tǒng)啟動時自動運行,并且一直在后臺運行,接受來自用戶或其他程序的信息,并運行相應的操作。通常,一個守護進程監(jiān)測指定的文件夾或端口,當有請求到達時,它會采取相應的措施來處理它。

使用守護進程腳本,您可以自動化管理服務,確保它們一直運行,并在需要時進行重啟。下面是如何創(chuàng)建并管理守護進程腳本的幾個步驟。

1. 編寫腳本

編寫腳本是創(chuàng)建守護進程腳本的之一步。在腳本中,您需要指定您要管理的應用程序的路徑、運行參數和名稱。腳本應該可以接受命令行參數,以便在需要時可以動態(tài)更改參數。以下是一個示例腳本:

“`

#!/bin/bash

APP_NAME=”myapp”

APP_PATH=”/usr/local/bin/$APP_NAME”

LOG_FILE=”/var/log/$APP_NAME.log”

PID_FILE=”/var/run/$APP_NAME.pid”

case “$1” in

start)

if [ -f $PID_FILE ]; then

echo “$APP_NAME is already running.”

exit 1

fi

nohup $APP_PATH –log-file $LOG_FILE –pid-file $PID_FILE &

;;

stop)

if [ ! -f $PID_FILE ]; then

echo “$APP_NAME is not running.”

exit 1

fi

kill -9 `cat $PID_FILE`

rm $PID_FILE

;;

restart)

$0 stop

sleep 2

$0 start

;;

*)

echo “Usage: $0 start|stop|restart”

exit 1

esac

exit 0

“`

在這個示例腳本中,我們設定了應用程序的名稱、路徑、日志文件和PID文件。在每種情況下,我們都檢查應用程序是否正在運行,并根據需要執(zhí)行相應的操作。守護進程應該總是以后臺模式運行,并且在啟動時應該將輸出重定向到一個日志文件中。

2. 將腳本保存到/etc/init.d目錄中

當腳本編寫完成后,您需要將其保存到Linux系統(tǒng)中的/etc/init.d 目錄中。這個目錄中包含了系統(tǒng)啟動時需要運行的所有服務和程序的腳本。

假設您已經完成了一個名為myapp的守護進程腳本,你可以使用以下命令將腳本文件復制到/etc/init.d目錄中。

“`

cp myapp /etc/init.d/

“`

3. 添加執(zhí)行權限并使用update-rc.d進行管理

您需要為該腳本添加執(zhí)行權限以便它能在系統(tǒng)啟動時自動運行。您可以使用以下命令來添加權限:

“`

chmod +x /etc/init.d/myapp

“`

然后,使用“update-rc.d”命令來添加或刪除守護進程腳本以確保它在系統(tǒng)啟動時自動運行。例如,您可以使用以下命令添加myapp服務:

“`

sudo update-rc.d myapp defaults

“`

要刪除myapp服務,請運行以下命令:

“`

sudo update-rc.d -f myapp remove

“`

守護進程腳本是自動化管理Linux服務的一種強大工具,可以避免手動管理服務的潛在問題。這個過程中,您可以輕松地編寫、保存、管理、添加執(zhí)行權限并自動運行腳本。

成都網站建設公司-創(chuàng)新互聯為您提供網站建設、網站制作、網頁設計及定制高端網站建設服務!

怎么將腳本作為linux的systemd

傳統(tǒng)方式,Unix和Linux服務(daemons)由SysV的init腳本啟動.這些服務寫成Bourne Shell腳本,通常駐留在像/etc/rc.d/init.d/這樣的目錄里,調用時有一個或幾個參數,比如start, stop或restart, 用來控制服務的開始,停止和重啟. 開始服務包括調用守護程序的代碼, 守護程序再fork一個后臺進程.Shell腳本很慢,難以閱讀,冗長而脆弱. 盡管shell腳本極其靈活(畢竟,腳本本身就是代碼)有些事兒很難拿腳本來完成,比如:安排并發(fā)執(zhí)行的順序,正確的監(jiān)督進程或只是詳盡的配置執(zhí)行上下文. systmed可以與腳本兼容, 但下面我們馬上就會提到,在安裝所有守護進程的時候推薦安裝原生的systemd服務文件. SysV 的啟動腳本需要根據發(fā)行版的不同做出調整,systemd的服務文件則兼容任何發(fā)行版中運行的systemd. 接下來是一個簡潔的入門手冊:如何把SysV的shell腳本轉換成一個systemd服務文件。理想情況下,上位的軟件應該在tar包里發(fā)行和安裝systemd的服務文件. 如果你已經根據入門手冊成功的把某個上位軟件SysV腳本轉換成功了,一個不錯的做法是把轉換成功的文件作為補丁提交給那個上位軟件. 后續(xù)的文章將會討論如何準備這樣一個補丁, 現在可以告訴你的是systemd的daemon(7)用戶手冊中有與之相關的很多有用信息.

開始吧,作為例子,我們將把ABRT守護進程的init腳本轉換成systemd的服務文件。ABRT是每個Fedora安裝版的標準組件,它是自動Bug報告工具(Automatic Bug Reporting Tool)的縮寫,比如,它提供收據crash dumps服務。它的SysV腳本上傳到這里了。

Linux設置定時任務

《使用PSSH批量管理Linux》 一文中,已經學習了使用p

.sh

批量管理linux的技巧。而很多時候,我們需要定時執(zhí)行一些任務,或者需要定時執(zhí)行一些批量任務。因此,本文就來研究一下linux設置定時任務的方法。

主要參考 Linux Crontab 定時任務 、 Linux定時任務Crontab命令詳解 和 Linux 定時任務詳解 。

cron(crond)是linux下用來周期性的執(zhí)行某種任務或等待處理某些事件的一個守護進程。

linux系統(tǒng)

上面原本就有非常多的計劃性工作,因此這個系統(tǒng)服務是默認啟動的。crond進程每分鐘會定期檢查是否有要執(zhí)行的任務,如果有要執(zhí)行的任務,則自動執(zhí)行該任務。另外,由于使用者自己也可以設置計劃任務,所以,linux系統(tǒng)做裂也提供了使用者控制計劃任務的命令:crontab命令。

crontab命令是cron table的簡寫,它是cron的配置文件,也可以叫它作業(yè)列表,我們可以在以下文件夾內找到相關配置文件。

linux下的任務調度分為兩類,系統(tǒng)任務調度和用戶任務調度。

系統(tǒng)任務調度:系統(tǒng)周期性所要執(zhí)行的工作,比如寫緩存數據到硬盤、日志清理等。 /etc/crontab 文件就是系統(tǒng)任務調度的配置文件。

用戶任務調度:用戶定期要執(zhí)行的工作,比如用戶數據備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計劃任務。所有用戶定義的crontab文件都被保存在 /var/spool/cron/crontabs/ 目錄中,其文件名與用戶名一致。

假設我們使用的是Ubuntu14.04.5 Server版,查看 /etc/crontab ,內容為:

之一行SHELL變量指定了系統(tǒng)要使用哪個shell;第二行PATH變量指定了系統(tǒng)執(zhí)行 命令的路徑。

接下來的命令格式為:

m h dom mon dow user command

英文全拼為:

minute hour day month week user commond

注意, /var/spool/cron 目錄中的用戶調度任務,沒有user一項,因為文件名已經代表了user。

在以上各個字段中,還可以使用以下

特殊字符

crontab命令格式為:

crontab

設置定時任務和時間緊密相關,如果服務器的時區(qū)時間設置和本地不同,就不能保證計劃任務帆胡宴的正確執(zhí)行。所以使用crontab的之一步,是調節(jié)好服務器的時間。

下面參考 Ubuntu 16.04將系統(tǒng)時間寫入到硬件時間BIOS ,對服務器時間進行調節(jié)。

時間是有時區(qū)的,無論硬態(tài)銀件時間還是操作系統(tǒng)時間。hwclock的時區(qū)在/etc/default/rcS文件中設置,里面有一個參數UTC,默認值為yes,表示使用UTC時區(qū),如果設置為no,那表示使用osclock的時區(qū)。建議hwclock與osclock設置相同的時區(qū),也就是no。

1、查看服務器硬件時間

sudo hwclock -r ,看到的時間格式為: Wed 23 May:02:17 AM HKT -0.seconds

2、查看服務器系統(tǒng)時間

date ,看到的時間格式為: Wed May 23 11:02:41 HKT 2023

3、設置hwclock和osclock時區(qū)相同

sudo vim /etc/default/rcS ,找到:

修改為:

4、將系統(tǒng)時間寫入硬件時間

sudo hwclock -w

5、修改系統(tǒng)時區(qū)

osclock的時區(qū)配置文件為/etc/timezone,不建議直接修改配置文件。

如果你想修改為CST時間,那么執(zhí)行 sudo tzselect 命令時,選擇Asia->China->Beijing Time即可,這時會提示使用Asia/Shanghai時區(qū)。(ubuntu和centos通用)

6、設置即刻生效

執(zhí)行 date ,發(fā)現時區(qū)沒有變化,依然是HKT。

sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

sudo ntpdate time.windows.com

如果執(zhí)行ntpdate報錯:ntpdate: no server suitable for synchronization found ,那么就換一個時間同步工具。

sudo apt-get install rdate

sudo rdate -s time-b.nist.gov

再次執(zhí)行 date ,發(fā)現時區(qū)已經變成了CST。

7、硬件時間同步

sudo hwclock -r ,發(fā)現硬件時間落后。

sudo hwclock -w ,再次把系統(tǒng)時間寫入硬件時間,同步完成。

實例1:每分鐘、每小時、每天、每周、每月、每年執(zhí)行

實例2:每小時的第3和第15分鐘執(zhí)行

3,15 * * * * myCommand

實例3:在上午8點到11點的第3和第15分鐘執(zhí)行

3,* * * myCommand

實例4:每隔兩天的上午8點到11點的第3和第15分鐘執(zhí)行

3,*/2 * * myCommand

實例5:每周一上午8點到11點的第3和第15分鐘執(zhí)行

3,* * 1 myCommand

實例6:每晚的21:30重啟b

* * * /etc/init.d/b restart

實例7:每月1、10、22日的4 : 45重啟b

,10,22 * * /etc/init.d/b restart

實例8:每周六、周日的1 : 10重啟b

* * 6,0 /etc/init.d/b restart

實例9:每天18 : 00至23 : 00之間每隔30分鐘重啟b

0,* * * /etc/init.d/b restart

實例10:每星期六的晚上11 : 00 pm重啟b

* * 6 /etc/init.d/b restart

實例11:每一小時重啟b

0 * * * * /etc/init.d/b restart

實例12:晚上11點到早上7點之間,每隔一小時重啟b

/1 * * * /etc/init.d/b restart

實例13:每月的4號與每周一到周三的11點重啟b

* mon-wed /etc/init.d/b restart

實例14:一月一號的4點重啟b

jan * /etc/init.d/b restart

實例15:每小時執(zhí)行/etc/cron.hourly目錄內的腳本

* * * * root run-parts /etc/cron.hourly

run-parts這個參數了,如果去掉這個參數的話,后面就可以寫要運行的某個腳本名,而不是目錄名了。

目標:每分鐘查看一下ganglia的狀態(tài),并保存到/tmp/log/ganglia目錄。

1、創(chuàng)建/tmp/log/ganglia目錄

sudo mkdir -p /tmp/log/ganglia

sudo chmod a+w /tmp/log/ganglia

2、編輯crontab

crontab -e ,選擇編輯器為vim

3、在crontab文件中添加一行

4、查看crontab任務

crontab -l ,看到任務已經添加成功。

5、等待了五分鐘,發(fā)現/tmp/log/ganglia目錄下啥也沒有。

sudo service cron status ,狀態(tài)正常。

sudo /etc/init.d/cron restart ,重啟cron試試。

又等待了五分鐘,發(fā)現/tmp/log/ganglia目錄下依然空空。

莫非是因為pssh沒有使用絕對路徑? whereis pssh ,找到pssh路徑為 /usr/lib/pssh ,修改crontab為:

然而,并沒有用。

還是查看下crontab日志吧!

以下主要參考 Ubuntu下用crontab 部署定時任務 。

1、編輯50-default.conf

sudo vim /etc/rsyslog.d/50-default.conf

2、把cron前的

井號

去掉,也就是修改為:

3、重啟rsyslog服務

sudo service rsyslog restart

4、重啟crontab服務

sudo service cron restart

5、查看crontab日志

less /var/log/cron.log

果然發(fā)現了問題:

也就是說,命令確實按時執(zhí)行了,只不過沒有執(zhí)行完,被

百分號

截斷了,導致log文件沒有正常生成!

修改crontab為:

終于,log文件成功生成,nice!但是,文件內容是空的!因為, /usr/lib/pssh 是一個目錄,不是pssh命令!真正的pssh命令是parallel-ssh,找到它的位置為 /usr/bin/parallel-ssh ,修改crontab:

至此,問題圓滿解決。

實際使用的時候,一天獲取一次ganglia的狀態(tài)就夠了,所以crontab改成:

以上,每天執(zhí)行一次定時任務,抓取ganglia的運行狀態(tài)保存到日志文件中。緊接著,我們的目標是使用腳本檢查當天的日志文件,如果發(fā)現ganglia運行異常,則產生一個錯誤日志。

1、假設日志文件ganglia.log的內容為:

2、參考 grep命令最經常使用的功能總結 ,編寫腳本checkganglia.sh

3、執(zhí)行

chmod a+x checkganglia.sh

./checkganglia.sh

如果所有客戶機的ganglia運行正常,就會輸出All services are runing!。如果有的客戶機ganglia進程不存在,則會在/tmp/log/ganglia/目錄下生成當天的錯誤日志。

4、設置定時運行

因為日志的檢查工作要在日志生成之后,所以時間上延后十分鐘。

上面的腳本,還有很多要改進的地方。比如有的客戶機宕機了,上面的腳本檢查不出來。比如有的客戶機ganglia服務沒有啟動,那么具體是哪幾臺?針對這兩個問題,下面進行改進。假設已經知道客戶機的數量為10。

參考 csplit命令 ,checkganglia.sh腳本修改為:

以上腳本,實現了當客戶機數量不為10的時候,進行報錯;當客戶機ganglia服務沒有啟動時,進行報錯,并且篩選出所有沒有啟動ganglia的客戶機。

本文中,我們先學習了crontab的基礎知識和基本用法。然后通過監(jiān)控ganglia這一個應用場景來具體學習crontab的詳細使用方法,包括查看cron日志的方法,crontab中命令轉義的方法,定時執(zhí)行腳本的方法,以及審閱日志腳本的編寫和進階。

關于linux 守護進程 腳本的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。

香港云服務器機房,創(chuàng)新互聯(www.cdcxhl.com)專業(yè)云服務器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯助力企業(yè)出海業(yè)務,提供一站式解決方案。香港服務器-免備案低延遲-雙向CN2+BGP極速互訪!


網頁題目:Linux守護進程腳本:自動化管理服務(linux守護進程腳本)
本文來源:http://www.5511xx.com/article/dhsipje.html