<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Systemd 進(jìn)程管理工具實(shí)戰(zhàn)教程

          共 7007字,需瀏覽 15分鐘

           ·

          2021-03-14 20:20

          公眾號(hào)關(guān)注“杰哥的IT之旅”,
          選擇“星標(biāo)”,重磅干貨,第一時(shí)間送達(dá)!


          systemd介紹

          systemd是目前Linux系統(tǒng)上主要的系統(tǒng)守護(hù)進(jìn)程管理工具,由于init一方面對(duì)于進(jìn)程的管理是串行化的,容易出現(xiàn)阻塞情況,另一方面init也僅僅是執(zhí)行啟動(dòng)腳本,并不能對(duì)服務(wù)本身進(jìn)行更多的管理。所以從CentOS 7開(kāi)始也由systemd取代了init作為默認(rèn)的系統(tǒng)進(jìn)程管理工具。

          systemd所管理的所有系統(tǒng)資源都稱作Unit,通過(guò)systemd命令集可以方便的對(duì)這些Unit進(jìn)行管理。比如systemctl、hostnamectl、timedatectl、localctl等命令,這些命令雖然改寫(xiě)了init時(shí)代用戶的命令使用習(xí)慣(不再使用chkconfig、service等命令),但確實(shí)也提供了很大的便捷性。

          systemd特點(diǎn)

          • 最新系統(tǒng)都采用systemd管理(RedHat7,CentOS7,Ubuntu15…)

          • CentOS7 支持開(kāi)機(jī)并行啟動(dòng)服務(wù),顯著提高開(kāi)機(jī)啟動(dòng)效率

          • CentOS7關(guān)機(jī)只關(guān)閉正在運(yùn)行的服務(wù),而CentOS6,全部都關(guān)閉一次。

          • CentOS7服務(wù)的啟動(dòng)與停止不再使用腳本進(jìn)行管理,也就是/etc/init.d下不在有腳本。

          • CentOS7使用systemd解決原有模式缺陷,比如原有service不會(huì)關(guān)閉程序產(chǎn)生的子進(jìn)程。

          systemd語(yǔ)法

          systemctl [command]      [unit](配置的應(yīng)用名稱)

          command可選項(xiàng)
          · start:?jiǎn)?dòng)指定的unit          systemctl start nginx
          · stop:關(guān)閉指定的unit           systemctl stop nginx
          · restart:重啟指定unit          systemctl restart nginx
          · reload:重載指定unit           systemctl reload nginx
          · enable:系統(tǒng)開(kāi)機(jī)時(shí)自動(dòng)啟動(dòng)指定unit,前提是配置文件中有相關(guān)配置 systemctl enable nginx
          · disable:開(kāi)機(jī)時(shí)不自動(dòng)運(yùn)行指定unit   systemctl disable nginx
          · status:查看指定unit當(dāng)前運(yùn)行狀態(tài) systemctl status nginx

          systemd配置文件說(shuō)明

          • 每一個(gè)Unit都需要有一個(gè)配置文件用于告知systemd對(duì)于服務(wù)的管理方式

          • 配置文件存放于/usr/lib/systemd/system/,設(shè)置開(kāi)機(jī)啟動(dòng)后會(huì)在/etc/systemd/system目錄建立軟鏈接文件

          • 每個(gè)Unit的配置文件配置默認(rèn)后綴名為.service

          • 在/usr/lib/systemd/system/目錄中分為system和user兩個(gè)目錄,一般將開(kāi)機(jī)不登陸就能運(yùn)行的程序存在系統(tǒng)服務(wù)里,也就是/usr/lib/systemd/system

          • 配置文件使用方括號(hào)分成了多個(gè)部分,并且區(qū)分大小寫(xiě)

          systemd相關(guān)文件

          systemd控制的相關(guān)文件CentOS6CentOS7
          服務(wù)啟動(dòng)的腳本啟動(dòng)路徑/etc/init.d/usr/lib/systemd/system
          開(kāi)機(jī)自啟服務(wù)存放路徑/etc/rcN.d/etc/systemd/system/multi-user.target.wants/
          默認(rèn)運(yùn)行級(jí)別配置文件/etc/inittab/etc/systemd/system/default.target

          實(shí)戰(zhàn)一

          源碼編譯安裝nginx 實(shí)現(xiàn)systemd管理控制

          安裝nginx編譯環(huán)境

          yum  -y install gcc gcc-c++    openssl-devel pcre-devel gd-devel  iproute net-tools telnet wget curl
          wget http://nginx.org/download/nginx-1.15.5.tar.gz
          tar zxf nginx-1.15.5.tar.gz &&
          cd nginx-1.15.5
          ./configure --prefix=/usr/local/nginx \
              --with-http_ssl_module \
              --with-http_stub_status_module 
          make -j 4 && make install

          通用方式啟動(dòng)nginx

          /usr/local/nginx/sbin/nginx  #啟動(dòng)
          /usr/local/nginx/sbin/nginx  -s reload  #重啟
          /usr/local/nginx/sbin/nginx -s   quit   #關(guān)閉nginx

          systemd 管理控制啟動(dòng)模式

          vim      /usr/lib/systemd/system/nginx.service

          [Unit]
          Description=nginx
          After=network.target

          [Service]
          Type=forking
          ExecStart=/usr/local/nginx/sbin/nginx
          ExecReload=/usr/local/nginx/sbin/nginx -s reload
          ExecStop=/usr/local/nginx/sbin/nginx -s quit
          PrivateTmp=true

          [Install]
          WantedBy=multi-user.target

          參數(shù)詳解

          systemctl restart nginx
          systemctl enable  nginx
          systemctl stop  nginx


          如圖所示實(shí)現(xiàn)了systemd 管理控制nginx服務(wù)

          實(shí)戰(zhàn)二

          二進(jìn)制安裝tomcat 實(shí)現(xiàn)systemd管理控制

          安裝java環(huán)境,我已經(jīng)將安裝包打包到我得服務(wù)器上,也可以去官網(wǎng)下載

          wget  120.78.77.38/file/jdk-8u231-linux-x64.rpm
          wget  120.78.77.38/file/apache-tomcat-9.0.27.tar.gz


          rpm -ivh  jdk-8u231-linux-x64.rpm    #rpm直接安裝jdk

          配置環(huán)境變量

          vim    /etc/profile

          export JAVA_HOME=/usr/java/jdk1.8.0_231-amd64
          export JRE_HOME=${JAVA_HOME}/jre  
          export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
          export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
          export  PATH=${JAVA_HOME}/bin:$PATH 
          source   /etc/profile
          java -version   #檢測(cè)環(huán)境


          安裝tomcat

          tar  -xf  apache-tomcat-9.0.27  
          mv  apache-tomcat-9.0.27  /usr/local/tomcat
          啟動(dòng)tomcat
          sh    /usr/local/tomcat/bin/startup.sh   #啟動(dòng)
          sh   /usr/local/tomcat/bin/shutdown.sh #關(guān)閉

          systemd管理控制啟動(dòng)

          vim      /usr/lib/systemd/system/tomcat.service


          [Unit]
          Description=tomcat server
          Wants=network-online.target
          After=network.target

          [Service]
          Type=forking
          Environment="JAVA_HOME=/usr/java/jdk1.8.0_231-amd64"
          Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
          Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
          ExecStart=/usr/local/tomcat/bin/startup.sh
          ExecStop=/usr/local/tomcat/bin/shutdown.sh
          Restart=on-failure

          [Install]
          WantedBy=multi-user.target
          systemctl restart tomcat  #啟動(dòng)
          systemctl enable tomcat   #配置自啟
          systemctl stop  tomcat   #停止服務(wù)
          systemctl status  tomcat  #檢測(cè)狀態(tài)

          以上兩個(gè)實(shí)戰(zhàn)nginx和tomcat程序中自帶了啟動(dòng)停止腳本,如果啟動(dòng)得程序沒(méi)有自帶腳本則需要自己編寫(xiě)一個(gè)類似得啟動(dòng)停止腳本

          實(shí)戰(zhàn)三

          部署jar程序 實(shí)現(xiàn)systemd管理控制

          實(shí)際得項(xiàng)目中會(huì)有一些jar程序需要啟動(dòng) 如果手動(dòng)啟動(dòng)則需要輸入一大串命令 停止則需要?dú)⒌暨M(jìn)程來(lái)停止,很麻煩

          舉一個(gè)實(shí)際啟動(dòng)得例子切換到j(luò)ar目錄下

          java -jar decode.jar -Dconfig=/usr/local/abc/application.properties

          編寫(xiě)一個(gè)啟動(dòng)腳本

          vim  demo.sh

          #!/bin/bash
          #

          source /etc/profile
          jarName="abc-web.jar"
          workDir="/usr/local/abc"

          start(){
              cd ${workDir} && java -jar ${jarName} --spring.profiles.active=prod --server.port=9630 >uams.log 2>&1 &
          }

          stop(){
              ps -ef | grep -qP "(?<=-jar)\s+${jarName}" && kill $(ps -ef | grep -P "(?<=-jar)\s+${jarName}" | awk '{print $2}')
          }

          case $1 in
              start)
                  start
                  ;;
              stop)
                  stop
                  ;;
              restart)
                  stop
                  start
                  ;;
          esac

          編寫(xiě) systemd 配置文件

          vim  /usr/lib/systemd/system/abc.service

          [Unit]
          Description=uams server
          Wants=network-online.target
          After=network.target

          [Service]
          Type=forking
          WorkingDirectory=/usr/local/abc/
          ExecStart=/bin/bash uams.sh start
          ExecStop=/bin/bash uams.sh stop
          ExecReload=/bin/bash uams.sh restart
          Restart=on-failure

          [Install]
          WantedBy=multi-user.target

          啟動(dòng)abc服務(wù)

          systemctl restart abc  #啟動(dòng)
          systemctl enable abc   #配置自啟
          systemctl stop  abc   #停止服務(wù)
          systemctl status  abc  #檢測(cè)狀態(tài)

          來(lái)源:https://blog.csdn.net/weixin_43546282/article/details/113761180

          推薦閱讀

          Linux 進(jìn)程總結(jié)

          kill -9 進(jìn)程殺不掉,怎么辦?

          一行代碼如何隱藏 Linux 進(jìn)程?

          詳解 Linux 環(huán)境下進(jìn)程管理工具 Supervisor

          神奇,原來(lái) Linux 終端下居然還有進(jìn)程記帳功能…

          Linux環(huán)境下進(jìn)程和計(jì)劃任務(wù)管理

          線程、進(jìn)程、多線程、多進(jìn)程和多任務(wù)有啥關(guān)系?

          瀏覽 56
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  千百撸日夜夜 | 久久久久久久久国产精品 | 444iii日韩 | 成人黄片免费网站 | www.99精品 |