Linux進程和任務管理
阿新 • • 發佈:2019-01-17
profile pla 無法自動 orm 自動執行任務 centos jboss 讀取 版本
process 進程
進程-線程等
Job
前臺--後臺: 後臺任務"與"前臺任務"的本質區別只有一個:是否繼承標準輸入 聯機--脫機 -以及crontab 脫機管理主要是針對終端異常斷開的情形。 脫機工作:離線後臺運行 通常使用nohup命令來使得脫機或註銷之後,Job依舊可以繼續運行。也就是說nohup忽略所有掛斷(SIGHUP)信號 00. 無論是前臺作業還是後臺作業,兩者都來自當前的shell,是當前shell的子程序。 下面是兩者的定義。 前臺作業:可以由用戶參與交互及控制的作業我們稱之為前臺作業。 後臺作業:在內存可以自運行的作業,用戶無法參與交互以及使用[ctrl]+c來終止,只能通過bg或fg來調用該作業。 a、 command & 直接讓作業進入後臺運行 b、 [ctrl]+z 將當前作業切換到後臺 c、 jobs 查看後臺作業狀態 d、 fg %n 讓後臺運行的作業n切換到前臺來 d、 bg %n 讓指定的作業n在後臺運行 e、 kill %n 移除指定的作業n "n" 為jobs命令查看到的job編號,不是進程id。 每一個job會有一個對應的job編號,編號在當前的終端從1開始分配。 01. crontab命令被用來提交和管理用戶的需要周期性執行的任務。crond的概念和crontab是不可分割的。crontab是一個命令, 常見於Unix和類Unix的操作系統之中,用於設置周期性被執行的指令。 該命令從標準輸入設備讀取指令,並將其存放於“crontab”文件中,以供之後讀取和執行。而crond正是它的守護進程。 Linux下的任務調度分為兩類:系統任務調度和用戶任務調度 在/etc目錄下有一個crontab文件,這個就是系統任務調度的配置文件 所有用戶定義的crontab文件都被保存在/var/spool/cron目錄中 02.crontab文件 crontab支持兩種狀態: a.直接編寫計劃任務; b.使用目錄的方式,放在目錄裏面的都會定時執行,定時目錄可在/etc/crontab中設定 第一步:寫cron腳本文件,命名為crontest.cron。 15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt 表示,每隔15分鐘,執行打印一次命令 第二步:添加定時任務。 執行命令 “crontab crontest.cron” 第三步:"crontab -l" 查看定時任務是否成功或者檢測/var/spool/cron下是否生成對應cron腳本 解釋: * * * * * /bin/sh /scripts/yy.sh 分 時 日 月 周 命令和文件路徑 (00-59) (0-23) (1-31) (1-12) (0-6) 所用符號表示意思 * 星號每的意思 - 減號連續一段時間,如:00 17-19 * * * cmd 每天下午17點,18點,19點執行一次命令 , 逗號多個時間段,如:00 10-11,17-19 * * * cmd 每天的上午10,11點整,下午的17,18,19點整執行一次命令 /n n代表數字,指每隔n時間執行一次,如: */2 * * * * cmd 每隔2分鐘執行一次命令 註意事項: 創建了一個crontab,但是這個任務卻無法自動執行,而手動執行這個任務卻沒有問題, 這種情況一般是由於在crontab文件中沒有配置環境變量引起的。在 crontab文件中定義多個調度任務時, 需要特別註意的一個問題就是環境變量的設置,因為我們手動執行某個任務時,是在當前shell環境下進行的,程 序當然能找到環境變量, 而系統自動執行任務調度時,是不會加載任何環境變量的,因此,就需要在crontab文件中指定任務運行所需的所有環境變量,這 樣,系統執行任務調度時就沒有問題了。 不要假定cron知道所需要的特殊環境,它其實並不知道。所以你要保證在shelll腳本中提供所有必要的路徑和環境變量, 除了一些自動設置的全局變量。所以註意如下: 1)腳本中涉及文件路徑時寫全局路徑; 2)腳本執行要用到java或其他環境變量時,通過source命令引入環境變量,如: cat start_cbp.sh #!/bin/sh source /etc/profile export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf /usr/local/jboss-4.0.5/bin/run.sh -c mev & 新創建的cron job,不會馬上執行,至少要過2分鐘才執行。如果重啟cron則馬上執行 僅僅執行一次 at 守護進程 atd 用戶準備退出 session 系統向該 session 發出SIGHUP信號 session 將SIGHUP信號發給所有子進程 子進程收到SIGHUP信號後,自動退出 上面的流程解釋了,為什麽"前臺任務"會隨著 session 的退出而退出:因為它收到了SIGHUP信號。 那麽,"後臺任務"是否也會收到SIGHUP信號? 這由 Shell 的huponexit參數決定的。 $ shopt | grep huponexit 執行上面的命令,就會看到huponexit參數的值 大多數Linux系統,這個參數默認關閉(off)。因此,session 退出的時候,不會把SIGHUP信號發給"後臺任務"
守護進程
daemon 守護進程(daemon)是一類在後臺運行的特殊進程,用於執行特定的系統任務 一般在命名後面會加一個d,表示守護進程 1.service命令是Redhat Linux兼容的發行版中用來控制系統服務的實用工具, 它以啟動、停止、重新啟動和關閉系統服務,還可以顯示所有系統服務的當前狀態。 centos 啟動某個獨立的守護程序服務的方式 2.etc/init.d/syslog start 建議大家將service命令 替換為/etc/init.d/mysqld stop(因為有一些linux的版本不支持service)
進程
1.進程分類 01.守護進程 前臺進程 後臺進程 02.父進程 子進程 03.系統進程 用戶進程 2.進程狀態 基本狀態 就緒狀態 運行狀態 阻塞狀態 轉換過程 就緒狀態---> 運行狀態- 運行狀態---->阻塞狀態 運行狀態--->就緒狀態 阻塞狀態---> 就緒狀態 <喚醒> 3.進程的查看 ps pstree top 4.進程的組成 程序 數據 進程控制塊(PCB) 包含<標誌信息、說明信息、現場信息、管理信息> 結構: 線性 索引 鏈式 5.進程控制 相關內容 : 作業控制
Linux進程和任務管理