centos7建議使用systemctl來管理服務的自啓動,它可以知足以前service和chkconfig的功能
[Unit] Description=nginx - high performance web server Documentation=http://nginx.org/en/docs/ After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
Description : 服務的簡單描述nginx
Documentation : 服務文檔web
Before、After:定義啓動順序。Before=xxx.service,表明本服務在xxx.service啓動以前啓動。After=xxx.service,表明本服務在xxx.service以後啓動。centos
Requires:這個單元啓動了,它須要的單元也會被啓動;它須要的單元被中止了,這個單元也中止了。tomcat
Wants:推薦使用。這個單元啓動了,它須要的單元也會被啓動;它須要的單元被中止了,對本單元沒有影響。jvm
[Service]socket
Type=simple(默認值):systemd認爲該服務將當即啓動。服務進程不會fork。若是該服務要啓動其餘服務,不要使用此類型啓動,除非該服務是socket激活型。post
Type=forking:systemd認爲當該服務進程fork,且父進程退出後服務啓動成功。對於常規的守護進程(daemon),除非你肯定此啓動方式沒法知足需求,使用此類型啓動便可。使用此啓動類型應同時指定 PIDFile=,以便systemd可以跟蹤服務的主進程。測試
Type=oneshot:這一選項適用於只執行一項任務、隨後當即退出的服務。可能須要同時設置 RemainAfterExit=yes 使得 systemd 在服務進程退出以後仍然認爲服務處於激活狀態。ui
Type=notify:與 Type=simple 相同,但約定服務會在就緒後向 systemd 發送一個信號。這一通知的實現由 libsystemd-daemon.so 提供。centos7
Type=dbus:若以此方式啓動,當指定的 BusName 出如今DBus系統總線上時,systemd認爲服務就緒。
Type=idle: systemd會等待全部任務(Jobs)處理完成後,纔開始執行idle類型的單元。除此以外,其餘行爲和Type=simple 相似。
PIDFile:pid文件路徑
ExecStart:指定啓動單元的命令或者腳本,ExecStartPre和ExecStartPost節指定在ExecStart以前或者以後用戶自定義執行的腳本。Type=oneshot容許指定多個但願順序執行的用戶自定義命令。
ExecReload:指定單元中止時執行的命令或者腳本。
ExecStop:指定單元中止時執行的命令或者腳本。
PrivateTmp:True表示給服務分配獨立的臨時空間
Restart:這個選項若是被容許,服務重啓的時候進程會退出,會經過systemctl命令執行清除並重啓的操做。
RemainAfterExit:若是設置這個選擇爲真,服務會被認爲是在激活狀態,即便因此的進程已經退出,默認的值爲假,這個選項只有在Type=oneshot時須要被配置。
[Install]
Alias:爲單元提供一個空間分離的附加名字。
RequiredBy:單元被容許運行須要的一系列依賴單元,RequiredBy列表從Require得到依賴信息。
WantBy:單元被容許運行須要的弱依賴性單元,Wantby從Want列表得到依賴信息。
Also:指出和單元一塊兒安裝或者被協助的單元。
DefaultInstance:實例單元的限制,這個選項指定若是單元被容許運行默認的實例。
systemctl daemon-reload 修改配置後重載是配置生效 systemctl enable nginx.service 開機啓用服務 systemctl disable nginx.service 禁用開機啓動 systemctl is-enabled nginx.service 判斷服務是否開機狀態 systemctl list-unit-files | grep enabled 查看開機啓動狀態服務列表
systemctl start nginx.service 啓動一個服務 systemctl stop postfix.service 關閉一個服務 systemctl restart nginx.service 重啓一個服務 systemctl status postfix.service 顯示一個服務的狀態
操做系統:CentOS 7(64位)
已安裝JDK,並配置好環境變量
已安裝tomcat,可手動啓動,安裝路徑:/opt/tomcat/(可自定義)
catalina.sh在執行的時候會調用同級路徑下的setenv.sh來設置額外的環境變量,所以須要在/opt/tomcat/bin路徑下建立setenv.sh文件。
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121 export CATALINA_HOME=/opt/tomcat export CATALINA_BASE=/opt/tomcat #設置Tomcat的PID文件 CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid" #添加JVM選項 JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"
==注意:路徑都使用絕對路徑。==
[Unit] Description=Tomcat8 After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/opt/tomcat/bin/tomcat.pid ExecStart=/opt/tomcat/bin/startup.sh ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable tomcat.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
systemctl daemon-reload
systemctl enable nginx.service