公开学习文档

公开学习文档


systemctl相关

<h2>参考文档</h2> <p>命令: <a href="https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html">https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html</a></p> <p>实战: <a href="https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html">https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html</a></p> <h2>设置服务</h2> <p>服务配置 <code>/usr/lib/systemd/system/dtunnel-lite-s.service</code> 内容如下:</p> <pre><code>[Unit] Description=dtunnel-lite center server After=network-online.target Wants=network-online.target [Service] ExecStart=/bin/bash /root/dtunnel_lite/start_service.sh ExecStop=/usr/bin/killall dtunnel_lite #ExecStop=/bin/kill -s TERM $MAINPID Type=simple Restart=on-failure RestartSec=60s [Install] WantedBy=multi-user.target </code></pre> <p>脚本 <code>/root/dtunnel_lite/start_service.sh</code> 内容如下:</p> <pre><code>#!/bin/bash shdir="`dirname $0`" cd ${shdir} bin="dtunnel_lite" args="-service :6443 -auth xxx -kcp k2:v2" logf="logs/run.log" # 限制文件大小,以 KB 为单位 function loglimit() { if [ ${#} -ne 2 ]; then return 2 fi local LOGFILE=${1} local MAXKSIZE=${2} if [ ! -f ${LOGFILE} ]; then return 1 fi local MINKSIZE local LOGDIR="`dirname ${LOGFILE}`" local TMP="${LOGDIR}/`basename ${LOGFILE}`".tmp # 临时文件放到同目录下 local CURKSIZE=`ls -l ${1} | awk '{print $5}'` let MINKSIZE=${MAXKSIZE}*1/2 # 日志截取一半 let CURKSIZE/=1024 if [ ${CURKSIZE} -gt ${MAXKSIZE} ]; then let SKIPKSIZE=${CURKSIZE}-${MINKSIZE} #echo "dd if=${LOGFILE} of=${TMP} bs=1024 count=${MAXKSIZE} skip=${SKIPKSIZE}" 1&gt;/dev/null 2&gt;&amp;1 dd if=${LOGFILE} of=${TMP} bs=1024 count=${MAXKSIZE} skip=${SKIPKSIZE} 1&gt;/dev/null 2&gt;&amp;1 mv -f ${TMP} ${LOGFILE} [ -f ${TMP} ] &amp;&amp; rm -f ${TMP} fi } # kill old process killall ${bin} 2&gt;/dev/null # mkdir logdir logdir="`dirname ${logf}`" [ ! -d ${logdir} ] &amp;&amp; mkdir -p $logdir # limit log file size loglimit ${logf} 2048 # start ./${bin} ${args} 1&gt;&gt;${logf} 2&gt;&amp;1 [ $? -eq 0 ] &amp;&amp; exit 39527</code></pre> <h2>去掉服务</h2> <pre><code># 停止服务 pi@raspberrypi:~ $ sudo systemctl stop dtunnel-lite-c.service # 禁止服务 pi@raspberrypi:~ $ sudo systemctl disable dtunnel-lite-c.service Removed /etc/systemd/system/multi-user.target.wants/dtunnel-lite-c.service.</code></pre> <h2>相关命令</h2> <pre><code># 重新加载配置文件 $ sudo systemctl daemon-reload # 重启相关服务 $ sudo systemctl restart foobar # 查夜服务状态 $ sudo systemctl status httpd # 开机启动 $ sudo systemctl enable httpd # 实时滚动显示最新日志 $ sudo journalctl -f</code></pre> <p>日志相关:</p> <pre><code> # 查看所有日志(默认情况下 ,只保存本次启动的日志) $ sudo journalctl # 查看内核日志(不显示应用日志) $ sudo journalctl -k # 查看系统本次启动的日志 $ sudo journalctl -b $ sudo journalctl -b -0 # 查看上一次启动的日志(需更改设置) $ sudo journalctl -b -1 # 查看指定时间的日志 $ sudo journalctl --since="2012-10-30 18:17:16" $ sudo journalctl --since "20 min ago" $ sudo journalctl --since yesterday $ sudo journalctl --since "2015-01-10" --until "2015-01-11 03:00" $ sudo journalctl --since 09:00 --until "1 hour ago" # 显示尾部的最新10行日志 $ sudo journalctl -n # 显示尾部指定行数的日志 $ sudo journalctl -n 20 # 实时滚动显示最新日志 $ sudo journalctl -f # 查看指定服务的日志 $ sudo journalctl /usr/lib/systemd/systemd # 查看指定进程的日志 $ sudo journalctl _PID=1 # 查看某个路径的脚本的日志 $ sudo journalctl /usr/bin/bash # 查看指定用户的日志 $ sudo journalctl _UID=33 --since today # 查看某个 Unit 的日志 $ sudo journalctl -u nginx.service $ sudo journalctl -u nginx.service --since today # 实时滚动显示某个 Unit 的最新日志 $ sudo journalctl -u nginx.service -f # 合并显示多个 Unit 的日志 $ journalctl -u nginx.service -u php-fpm.service --since today # 查看指定优先级(及其以上级别)的日志,共有8级 # 0: emerg # 1: alert # 2: crit # 3: err # 4: warning # 5: notice # 6: info # 7: debug $ sudo journalctl -p err -b # 日志默认分页输出,--no-pager 改为正常的标准输出 $ sudo journalctl --no-pager # 以 JSON 格式(单行)输出 $ sudo journalctl -b -u nginx.service -o json # 以 JSON 格式(多行)输出,可读性更好 $ sudo journalctl -b -u nginx.serviceqq -o json-pretty # 显示日志占据的硬盘空间 $ sudo journalctl --disk-usage # 指定日志文件占据的最大空间 $ sudo journalctl --vacuum-size=1G # 指定日志文件保存多久 $ sudo journalctl --vacuum-time=1years</code></pre>

页面列表

ITEM_HTML