《樹莓派應(yīng)用開發(fā)》課程 第10章-計劃任務(wù)和開機啟動項_第1頁
《樹莓派應(yīng)用開發(fā)》課程 第10章-計劃任務(wù)和開機啟動項_第2頁
《樹莓派應(yīng)用開發(fā)》課程 第10章-計劃任務(wù)和開機啟動項_第3頁
《樹莓派應(yīng)用開發(fā)》課程 第10章-計劃任務(wù)和開機啟動項_第4頁
《樹莓派應(yīng)用開發(fā)》課程 第10章-計劃任務(wù)和開機啟動項_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第一季度工作報告XXXXXX公司名稱LOGO站長之家PPT模板樹莓派應(yīng)用開發(fā)第十章計劃任務(wù)和開機啟動項10.1cron配置計劃任務(wù)10.2systemd設(shè)置開機啟動項

cron配置計劃任務(wù)cron是Linux系統(tǒng)的一個配置定期任務(wù)的工具,用于定期或者以一定的時間間隔執(zhí)行一些命令或者腳本,可以在無需人工干預(yù)的情況下運行任務(wù),可執(zhí)行的任務(wù)范圍很廣泛。cron在系統(tǒng)中有一個運行著的守護進程,在系統(tǒng)運行時,守護進程會一直在后臺運行,并對特定事件做出響應(yīng),當系統(tǒng)時間符合某一條規(guī)劃記錄的執(zhí)行時間時,守護進程就會執(zhí)行對應(yīng)的任務(wù)??梢栽O(shè)置cron為開機自動啟動或者不啟動。cron啟動后會讀取它的所有配置文件,然后cron會根據(jù)命令和執(zhí)行時間來按時來調(diào)用度工作任務(wù)。cron服務(wù)提供crontab命令來設(shè)定cron服務(wù)。crontab命令用于編輯cron計劃任務(wù)列表,編輯操作是基于每個用戶的,每一個用戶都擁有自己的crontab。crontab命令從標準輸入設(shè)備讀取指令,并將指令存放于/etc/crontab文件中,以供后期讀取和執(zhí)行。通常,cron在后臺運行,crontab儲存的指令被守護進程激活,每一分鐘檢查是否有預(yù)定的任務(wù)需要執(zhí)行。

cron配置計劃任務(wù)樹莓派也支持使用cron配置計劃任務(wù)。樹莓派默認系統(tǒng)下cron啟動、重啟、停止、查詢狀態(tài)、重新載入配置的命令:sudoservicecronstart#啟動sudoservicecronrestart#重啟sudoservicecronstop#停止sudoservicecronstatus#查詢狀態(tài)sudoservicecronreload#重新載入配置樹莓派默認系統(tǒng)下設(shè)置crontab定時任務(wù)為開機啟動或者不啟動的命令:sudosystemctlis-enabledcron.service#查看是否為開機自啟動sudosystemctlenablecron.service#設(shè)置服務(wù)為開啟啟動sudosystemctldisablecron.service#關(guān)閉服務(wù)開機啟動在樹莓派配置計劃任務(wù)的時候,確保cron服務(wù)已經(jīng)設(shè)置為開機啟動,便于使用cron服務(wù)。

cron配置計劃任務(wù)在/etc目錄下的crontab文件中,可以查看cron定時任務(wù)的設(shè)置規(guī)則。使用sudonano/etc/crontab命令打開crontab文件后,會看到文件里保存有cron定時任務(wù)的設(shè)置規(guī)則

cron配置計劃任務(wù)首先進入并編輯crontab文件,進行編輯crontable的操作:sudocrontab-e首次運行命令時會提示選擇一個編輯器,如果不知道選哪個編輯器就直接回車選擇nano編輯器

cron配置計劃任務(wù)在任務(wù)計劃表中,每一行作為一項計劃任務(wù),每一項計劃任務(wù)的內(nèi)容都包含六個部分:星期中的哪一天,年份中的哪一月,月份中的哪一天,小時,分鐘,后面跟著要定時執(zhí)行的命令,使用空格作為分割符。以#開始的行是注釋。在數(shù)字部分,除了使用數(shù)字外,還可以使用*來表示不限范圍。計劃任務(wù)的具體的格式:格式中星期dow的取值范圍是0-7,其中的1到6分別表示星期一到星期六;7和0都代表星期天;除了使用數(shù)字,還可以使用星期的英文縮寫,數(shù)字和英文縮寫的對應(yīng)關(guān)系為:0-Sun,1-Mon,2-Tue,3-Wed,4-Thu,5-Fri,6-Sat,7-Sun。mhdommondow

command┬┬┬┬┬

要執(zhí)行的指令││││└───星期(取值范圍:0-7)│││└─────月(取值范圍:1-12)││└───────日(取值范圍:1-31)│└─────────小時(取值范圍:0-23)└──────────分鐘(取值范圍:0-59)

cron配置計劃任務(wù)每個與時間有關(guān)的配置表達式可以有以下幾種組合配置方式:"-":為從某個時候到某個時候要執(zhí)行command任務(wù)。例如:如果dow配置為1-3,則表示從周一到周三要執(zhí)行command任務(wù)"*":為每個時間單位都要執(zhí)行。例如:如果m配置為*,則每分鐘都要執(zhí)行一次command任務(wù);如果m配置為*/n,則每隔n分鐘要執(zhí)行一次command任務(wù)。"/":為每隔多少時間執(zhí)行一次。例如:如果dom配置為*/3,則表示每隔3個月就要執(zhí)行一次command任務(wù);如果dom配置為5-10/3,則表示從5月到10月之間,每隔3個月執(zhí)行一次command任務(wù)。

cron配置計劃任務(wù)計劃任務(wù)配置舉例如下:#每天的2:09,3:09,4:09執(zhí)行touch指令92-4***touch/tmp/temp.log#每天的2:09,12:09執(zhí)行touch命令92,12***touch/tmp/temp.log#每天凌晨4點和中午12點30分對樹莓派進行重啟04***sudoreboot3012***sudoreboot#每天0點0分運行backup.sh腳本00***

/home/pi/backup.sh#在12月內(nèi),每天的早上6點到12點,每隔3個小時0分鐘執(zhí)行一次/usr/bin/backup0\6-12/3*12*/usr/bin/backup#在樹莓派每次啟動時都運行myscript.py命令,使用@reboot替代了日期和時間@rebootpython/home/pi/myscript.py#如果需要命令僅在后臺運行,則可以加一個&符號:@rebootpython/home/pi/myscript.py&

systemd設(shè)置開機啟動項systemd即為systemdaemon,是目前Linux系統(tǒng)上主要的系統(tǒng)守護進程管理工具,是開源軟件,用于替換init系統(tǒng),能夠管理系統(tǒng)啟動過程和系統(tǒng)服務(wù)。systemctl是systemd的主命令,用于管理系統(tǒng)及服務(wù)。systemd的開發(fā)目標是提供更優(yōu)秀的框架以表示系統(tǒng)服務(wù)間的依賴關(guān)系,并依此實現(xiàn)系統(tǒng)初始化時服務(wù)的并行啟動,同時達到降低Shell的系統(tǒng)開銷的效果,最終代替常用的SystemV與BSD風(fēng)格init程序。

systemd設(shè)置開機啟動項與多數(shù)發(fā)行版使用的SystemV風(fēng)格init相比,systemd采用了以下新技術(shù):(1)采用Socket激活式與總線激活式服務(wù),以提高相互依賴的各服務(wù)的并行運行性能;(2)用Cgroups代替PID來追蹤進程,因此即使是兩次fork之后生成的守護進程也不會脫離systemd的控制。

systemd設(shè)置開機啟動項Systemd提供的功能包括:支持并行化任務(wù);同時采用socket式與D-Bus總線式激活服務(wù);按需啟動守護進程;利用Linux的cgroups監(jiān)視進程;支持快照和系統(tǒng)恢復(fù);維護掛載點和自動掛載點;各服務(wù)間基于依賴關(guān)系進行精密控制。支持SysV和LSB初始腳本,可以替代sysvinit。除此之外,還包括日志進程、控制基礎(chǔ)系統(tǒng)配置,維護登陸用戶列表以及系統(tǒng)賬戶、運行時目錄和設(shè)置,可以運行容器和虛擬機,可以簡單的管理網(wǎng)絡(luò)配置、網(wǎng)絡(luò)時間同步、日志轉(zhuǎn)發(fā)和名稱解析等。

systemd設(shè)置開機啟動項systemd的新特性有:系統(tǒng)引導(dǎo)時實現(xiàn)服務(wù)并行啟動;按需激活進程;系統(tǒng)狀態(tài)快照;基于依賴關(guān)系定義服務(wù)控制邏輯。

systemd的關(guān)鍵特性:基于socket的激活機制:socket與程序分離;基于bus的激活機制;基于device的激活機制;基于Path的激活機制;系統(tǒng)快照:保存各unit的當前狀態(tài)信息于持久存儲設(shè)備中;向后兼容sysvinit腳本,存放在/etc/init.d/中。

systemd設(shè)置開機啟動項systemd所管理的所有系統(tǒng)資源都稱作Unit,通過systemd命令集可以方便的對這些Unit進行管理。unit由其相關(guān)配置文件進行標識、識別和配置;文件中主要包含了系統(tǒng)服務(wù)、監(jiān)聽的socket、保存的快照以及其它與init相關(guān)的信息。

systemd設(shè)置開機啟動項unit的常見類型有:Serviceunit:文件擴展名為.service,用于定義系統(tǒng)服務(wù);Targetunit:文件擴展名為.target,用于模擬實現(xiàn)“運行級別”;Deviceunit:文件擴展名為.device,用于定義內(nèi)核識別的設(shè)備;Mountunit:文件擴展名為.mount,定義文件系統(tǒng)掛載點;Socketunit:文件擴展名為.socket,用于標識進程間通信用到的socket文件;Snapshotunit:文件擴展名為.snapshot,管理系統(tǒng)快照;Swapunit:文件擴展名為.swap,用于標識swap設(shè)備;Automountunit:文件擴展名為.automount,文件系統(tǒng)自動點設(shè)備;Pathunit:文件擴展名為.path,用于定義文件系統(tǒng)中的一文件或目錄;

systemd設(shè)置開機啟動項Systemctl是一個systemd工具,主要負責(zé)控制systemd系統(tǒng)和服務(wù)管理器。systemctl的命令的用法是固定不變的:systemctl[command][unit](配置的應(yīng)用名稱)command可選項為:start:啟動指定的unit,例如systemctlstartnginxstop:關(guān)閉指定的unit,例如systemctlstopnginxrestart:重啟指定unit,例如systemctlrestartnginxreload:重載指定unit,例如systemctlreloadnginxenable:系統(tǒng)開機時自動啟動指定unit,前提是配置文件中有相關(guān)配置,例如systemctlenablenginxdisable:開機時不自動運行指定unit,例如systemctldisablenginxstatus:查看指定unit當前運行狀態(tài),例如systemctlstatusnginx

systemd設(shè)置開機啟動項systemctl還可以查看使用的服務(wù),直接使用sudosystemctllist-unit-files命令可以看到配置單元列表,從列表中查看各個服務(wù)的啟動與禁用情況,被啟用enabled的單元顯示為綠色,被禁用disabled的顯示為紅色。標記為static的單元不能直接啟用,它們是其他單元所依賴的對象,不是由systemd啟動的服務(wù),systemctl無法與之通信??梢允褂霉艿肋M行具體的選擇。sudosystemctllist-unit-files--type=service|grepdocker

systemd設(shè)置開機啟動項如果修改了某個服務(wù)的配置文件,就要使用sudosystemctldaemon-reload命令重新加載配置服務(wù),然后使用sudosystemctlrestart命令重新啟動,否則修改不會生效。例如修改了httpd.service服務(wù)的配置后要運行命令:sudosystemctldaemon-reloadsudosystemctlrestarthttpd.service

systemd設(shè)置開機啟動項我們還可以使用systemctlcat命令來查看具體的配置單元的設(shè)置。例如使用如下命令:sudosystemctlcatsshd.service從sshd.service返回的信息可以看到sshd.service主要分為三個區(qū)塊:(1)Unit區(qū)塊:啟動順序和依賴關(guān)系;

Description:應(yīng)用簡單描述。

AfterBefore:定義啟動關(guān)系,如果依賴的應(yīng)用需要啟動,那么本應(yīng)用應(yīng)該是排在他之前,還是之后。

Wants:表示服務(wù)之間存在"弱依賴"關(guān)系。

Requires:表示"強依賴"關(guān)系。Wants字段與Requires字段只涉及依賴關(guān)系,與啟動順序無關(guān),默認情況下是同時啟動的。

systemd設(shè)置開機啟動項(2)Service區(qū)塊:啟動行為;EnvironmentFile字段:指定當前服務(wù)的環(huán)境參數(shù)文件。ExecStart字段:定義啟動進程時執(zhí)行的命令。Type字段:定義啟動類型。KillMode字段:定義Systemd如何停止服務(wù)。Restart字段:定義了RemainAfterExit字段:啟動命令退出時,是否保持服務(wù)。應(yīng)用的重啟方式。RestartSec字段:表示Systemd重啟服務(wù)之前,需要等待的秒數(shù)。

systemd設(shè)置開機啟動項(3)Install區(qū)塊:開機啟動;WantedBy字段:表示該服務(wù)所在的Target。一般來說,常用的Target有兩個:multi-user.target表示多用戶命令行狀態(tài);graphical.target表示圖形用戶狀態(tài),它依賴于multi-user.target;一般情況下是配置multi-user.target為開機啟動。

systemd設(shè)置開機啟動項下面我們學(xué)習(xí)在樹莓派上使用systemd來設(shè)置開機啟動項,將命令或程序配置為開機啟動時自動運行的服務(wù)。完成配置之后,就可以通過命令行來啟動、停止、禁用這個服務(wù)。首先使用nano編輯器在/home/pi目錄下新建一個main.py文件:sudonanomain.py在main.py文件中輸入以下python代碼:importosimportsocket【…….剩余代碼請參考教材】

systemd設(shè)置開機啟動項保存文件后退出,在LX終端里使用命令調(diào)試運行好:pythonmain.py正常情況下,運行結(jié)果:

systemd設(shè)置開機啟動項然后創(chuàng)建服務(wù)。在樹莓派上使用如下命令創(chuàng)建一個myscript.service文件:sudonanomyscript.service把以下配置項的內(nèi)容編輯輸入到文件里:[Unit]Description=MyserviceAfter=network.target

[Service]ExecStart=/usr/bin/python3-umain.pyWorkingDirectory=/home/piStandardOutput=inheritStandardError=inheritRestart=alwaysUser=pi

[Install]WantedB

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論