我有一个基于 C++ 的应用程序,我正在运行(可执行)作为 systemd 的守护进程。
单元文件:
[单元]
说明=控制台服务
之后=网络.目标
[服务]
Environment="USER=ubuntu" "路径=/home/ubuntu/console/bin"
WorkingDirectory=/home/ubuntu/console/bin
ExecStart=/bin/sh -ec "exec /sbin/start-stop-daemon -S -c ${USER} -d ${Path} --pidfile=/var/run/console.pid --oknodo --exec控制台可执行文件“#2>/dev/null
ExecStop=/bin/sh -ec "exec /sbin/start-stop-daemon -K --quiet -c ${USER} -d ${Path} --pidfile=/var/run/console.pid --retry =TERM/30/KILL/5 --oknodo --exec consoleExecutable" #2>/dev/null
重启=失败
RemainAfterExit=no
超时停止秒=10
成功退出状态=0 1
TimeoutStartSec=360
[安装]
WantedBy=multi-user.target
当我发出 start 命令时,服务正在启动,但它立即收到关闭信号然后退出。任何线索,发生了什么?
须藤 systemctl 状态 console.service
? console.service - 控制台服务
已加载:已加载(/etc/systemd/system/console.service;已启用;供应商预设:已启用)
活动:自 UTC 时间周一 2017-09-25 19:58:58 起停用(stop-sigterm);1 秒前
进程:8706 ExecStop=/bin/sh -ec exec /sbin/start-stop-daemon -K --quiet -c ${USER} -d ${Path} … 我需要提取最后一个冒号之前的字符,:并删除[]最后一行中的方括号。我的文件结构是
256.XXX.XXX.X:20234
214.XXX.XXX.X:7249
[2200:XXXX:XXXX:XXX:XXXX:XXXX:XXXX:XXXX]:46288
Run Code Online (Sandbox Code Playgroud)
我需要以下形式的输出文件:
256.XXX.XXX.X
214.XXX.XXX.X
2200:XXXX:XXXX:XXX:XXXX:XXXX:XXXX:XXXX
Run Code Online (Sandbox Code Playgroud) 我有一个脚本execute.sh,它通过curl 调用接收JSON
\n\n#!/bin/bash\n\nsource getoutput.sh\nserver="$1"\ncmd="$2"\n\nres=$(curl -sS http://$server -X PUT -H "Content-Type: application/json" -d "{ \\"command\\" : \\"$cmd\\" }")\nRun Code Online (Sandbox Code Playgroud)\n\n运行此\n./execute.sh 246.XXX:2000“stop FXXXXXXXXXXX-XXXXXXXX-XXXXXXXX-XXXX”时
\n\n这是没有任何错误的工作
\n\n但是当在 while 循环中运行它时
\n\nwhile read id; do\n./execute.sh 246.X.X.X:2000 "stop $id"\ndone < id\nRun Code Online (Sandbox Code Playgroud)\n\n它抛出解析错误:无效字符串:从 U+0000 到 U+001F 的控制字符必须在第 6 行第 74 列进行转义
\n\n输出 diff\xc3\xa9rences :
\n\n在职的:
\n\n+ source getoutput.sh\n+ server=246.X.X.X:2000\n+ cmd=\'stop FXXXXXXXXXXX-XXXXXXXX-XXXXXXXX-XXXX\'\n++ curl -sS http://246.X.X.X:2000 -X PUT -H \'Content-Type: application/json\' -d \'{ "command" : "stop FXXXXXXXXXXX-XXXXXXXX-XXXXXXXX-XXXX" }\'\n+ res=\'{\n "status" : 200,\n …Run Code Online (Sandbox Code Playgroud) 我有一个包含以下内容的文件。我想替换chrome为chromeBackup但不是在所有地方。
Name=chrome
XXXXXXXXXXX
Run=bin -app "chrome/chrome.sh"
XXXXXXXXXXX
Vol.apps/chrome=chrome
XXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
所需输出:
Name=chrome
XXXXXXXXXXX
Run=bin -app "chromeBackup/chromeBackup.sh"
XXXXXXXXXXX
Vol.apps/chromeBackup=chromeBackup
XXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)