1. 程式人生 > >Linux進程和任務管理

Linux進程和任務管理

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進程和任務管理