Linux基础知识--进程管理与计划任务
Linux啟動流程:
開機自檢BIOS是檢測硬件以及各個設備是否準備好
MBR引導是看系統放在哪個位置,進行加載;引導分區,里面有多個系統,看需要啟動哪個系統
GRUP菜單,進行一些選項,比如說看啟動哪個系統
?
INIT進程:
由Linux內核加載運行/sbin/init程序
是系統的第一個進程,是所有進程的祖宗,PID(進程標記)號永遠為1
配置文件/etc/inittab
?
Linux系統運行級別(runlevels)
有7個級別,
0關機
1單用戶模式
2字符界面的多用戶界面(不支持網絡)
3字符界面的完整多用戶界面
4未分配使用
5圖形界面的多用戶界面
6重新啟動
runlevel命令可以查看系統的運行級別,結果為兩個數字,前者為切換前的系統級別,后者為當前級別
?
查看系統服務的啟動狀態:
格式:chkconfig --list
chkconfig --list 服務名稱 可以查看每個級別下的服務啟動狀態
服務腳本位置:/etc/init.d? ?/etc/rc.d/init.d
設置系統服務的啟動狀態
格式:chkconfig --level 級別列表 服務名 on|off
可以設置在哪些級別中服務的啟動狀態
?
進程管理:
程序和進程:程序是保存在硬盤、光盤等介質中的可執行代碼和數據,是靜態保存的代碼;進程是在CPU及內存中運行的代碼,是動態執行的,每個進程都可創建一個或多個子進程(父、子進程)
ps統計靜態進程的信息:
ps aux
ps -elf
a顯示當前終端下的所有進程信息
u使用以用戶為主的格式輸出進程信息
x顯示當前用戶在所有終端下的進程信息
-e顯示系統內的所有進程信息
-l使用長格式顯示進程信息
-f使用完整格式顯示進程信息
top查看動態的進程排名信息,q退出查看
pgrep根據特定的條件查詢進程PID信息
-l列出進程名稱
-U根據進程所屬的用戶名進行查找
-t根據進程所在終端進行查找
pgrep [選項]... 進程名
[root@localhost ~]# pgrep "init" 1 [root@localhost ~]# pgrep -l "init" 1 init [root@localhost ~]# pgrep -l "log" 6771 syslogd 6774 klogd [root@localhost ~]# pgrep -l -U root "log" 6771 syslogd 6774 klogdinit的進程PID為1,進程名是init,包含log進程的進程PID有6771、6774
pstree以樹形結構顯示進程之間的信息
pstree -aup
-u列出進程對應的用戶名
-a列出進程對應的完整命令
-p列出進程的ID號
進程的不同啟動方式
手動啟動
前臺啟動:用戶輸入命令,直接執行程序
后臺啟動:在命令行尾加上“&”符號
調度啟動:
使用at命令,設置在某個時間執行一次任務
使用crontab命令,設置固定周期重復執行預先計劃好的任務
進程前后臺調度
Ctrl+Z將當前進程掛起,即調入后臺
jobs命令,查看處于后臺的任務列表
fg命令,將處于后臺的進程恢復至前臺,需指定任務序號
Ctrl+C終止正在執行的命令
kill用于終止指定PID的進程
killall用于終止指定名稱的所有進程,-9選項用于強制終止
pkill根據特定條件終止相應進程
-U根據進程所屬的用戶名終止相應進程
-t根據進程所在終端終止相應進程
[root@localhost ~]# ping 192.168.xx.1 PING 192.168.xx.1 (192.168.xx.1) 56(84) bytes of data.[1]+ Stopped ping 192.168.xx.1 [root@localhost ~]# jobs [1]+ Stopped ping 192.168.xx.1 [root@localhost ~]# fg 1 ping 192.168.xx.1--- 192.168.xx.1 ping statistics --- 7 packets transmitted, 0 received, 100% packet loss, time 15995ms[root@localhost ~]# jobsLinux中ping物理機的IP,進行會一直執行,Ctrl+Z將當前進程調入到后臺,jobs查看后臺進程,任務序號為1,fg 1將后臺進程調入到前臺,Ctrl+C終止當前進程
計劃任務管理
一次性任務,使用at命令,指定日期、時間點執行一些預定的命令操作
服務腳本名稱:/etc/init.d/atd,在執行這個命令之前首先要保證atd服務啟動
格式:at [HH:MM] [yyyy-mm-dd]
啟動服務:service atd start,或者/etc/init.d/atd start
查看服務啟動狀態:service atd status
Ctrl+D提交任務
atq查詢當前設置的at任務列表
atrm刪除指定任務編號的at任務
atrm 編號
[root@localhost ~]# cd /home [root@localhost home]# ls audispd.conf file1.tar.gz file3 test test2 file1.tar file2.tar.gz file3.tar.gz test1 test.tar.bz2 [root@localhost home]# date Sat Feb 16 20:00:36 CST 2019 [root@localhost home]# at 20:02 at> touch file04 at> <EOT> job 1 at 2019-02-16 20:02 [root@localhost home]# date Sat Feb 16 20:01:19 CST 2019 [root@localhost home]# date Sat Feb 16 20:02:34 CST 2019 [root@localhost home]# ls audispd.conf file1.tar file2.tar.gz file3.tar.gz test1 test.tar.bz2 file04 file1.tar.gz file3 test test2在home目錄下,開始沒有file04,現在想要在當天的20:02時刻創建file04,。因此首先獲取當前時間,制定當前時間之后的某個時間點創建file04的任務計劃,按Ctrl+D提交計劃,時間到了,發現任務執行完畢,file04創建。
?
周期性任務crontab,按照預先設置的時間周期重復執行任務
服務腳本名稱:/etc/init.d/crond,設置計劃之前保證服務啟動
全局配置文件,位于/etc/crontab
系統默認的設置位于/etc/cron.*/
用戶定義設置,位于文件/var/spool/cron/用戶名
crontab -e [-u 用戶名] 編輯計劃任務,不指定用戶默認當前用戶
crontab -l [-u 用戶名] 查看計劃任務,不指定用戶默認當前用戶
crontab -r [-u 用戶名] 刪除計劃任務,不指定用戶默認當前用戶,只能刪除當前用戶的周期性任務計劃
只有root用戶才能為其他用戶制定周期性任務計劃,其他用戶只能管理自己的周期性任務計劃
任務配置格式:
分鐘(0-59)? 小時(0-23)? 日期? ? 月份? ? 星期 (0-7)? ?命令(要執行的命令或程序腳本)
時間數值的特殊表示方法:
*表示該范圍內的任意時間
,表示間隔多個不連續的時間點
-表示一個連續的時間范圍
/指定間隔的時間頻率
示例:
0 17 * *? 1-5? ? ? ?每天周一到周五的17點整
30 8 * * 1,3,5? ? ?周一周三周五的8:30執行
0 9-22/2 * * 7 星期天的9點到22點每隔兩小時執行一次
案例:
每天早上7:50自動開啟sshd服務,22點50時關閉
每隔5天清空一次FTP服務器公共目錄/var/ftp/pub
每周六的7:30時,重新啟動httpd服務
??每周一、三、五的17:30時,打包并壓縮/etc/httpd目錄
[root@localhost home]# cd /var/spool/cron [root@localhost cron]# ls [root@localhost cron]# crontab -e -u root進入/var/spool/cron目錄,開始編輯計劃任務
50 7 * * * /sbin/service sshd start 50 22 * * * /sbin/service sshd stop 0 * */5 * * /bin/rm -rf /var/ftp/pub/* 30 7 * * 6 /sbin/service httpd restart 30 17 * * 1,3,5 /bin/tar jcvf httpdconf.tar.bz2 /etc/httpd~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ -- INSERT --相應的服務或者指令要寫出絕對路徑,查看當前用戶的任務計劃
[root@localhost cron]# crontab -l 50 7 * * * /sbin/service sshd start 50 22 * * * /sbin/service sshd stop 0 * */5 * * /bin/rm -rf /var/ftp/pub/* 30 7 * * 6 /sbin/service httpd restart 30 17 * * 1,3,5 /bin/tar jcvf httpdconf.tar.bz2 /etc/httpd刪除之后,發現沒有任何任務計劃
[root@localhost cron]# crontab -r [root@localhost cron]# crontab -l no crontab for root?
總結:
INIT進程,系統的第一個進程,PID為1,存放在/etc/inittab
runlevels,Linux系統的運行級別,0-7,7個級別,4未分配;runlevel命令查看最近一次修改之前的運行級別和當前運行級別
chkconfig --list
chkconfig?--level 級別列表 服務名 on|off
ps統計靜態進程信息,ps aux
top查看動態進程排名信息
pgrep根據條件查詢進程信息
pstree以樹形結構顯示進程之間的關系,pstree -aup
Ctrl+Z、jobs、fg 任務序列號、Ctrl+C、kill、killall、killall -9
at一次性任務,/etc/init.d/atd 、atq、atrm
crontab周期性任務計劃,/etc/init.d/crond、/var/spool/cron/用戶名、crontab -e、crontab -l、crontab -r
轉載于:https://www.cnblogs.com/bigbigtong/p/10381105.html
總結
以上是生活随笔為你收集整理的Linux基础知识--进程管理与计划任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PYPL 二月榜单发布:最受欢迎的编程语
- 下一篇: mac下用scp命令实现本地文件与服务器