小编Nan*_*ani的帖子

为什么systemd启动后立即停止服务?

我有一个基于 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} …

systemd

5
推荐指数
2
解决办法
2万
查看次数

提取最后一个冒号之前的字符

我需要提取最后一个冒号之前的字符,:并删除[]最后一行中的方括号。我的文件结构是

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)

sed awk text-processing

5
推荐指数
1
解决办法
443
查看次数

解析错误:无效字符串:从 U+0000 到 U+001F 的控制字符必须转义

我有一个脚本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\\" }")\n
Run Code Online (Sandbox Code Playgroud)\n\n

运行此\n./execute.sh 246.XXX:2000“stop FXXXXXXXXXXX-XXXXXXXX-XXXXXXXX-XXXX”时

\n\n

这是没有任何错误的工作

\n\n

但是当在 while 循环中运行它时

\n\n
while read id; do\n./execute.sh 246.X.X.X:2000 "stop $id"\ndone < id\n
Run 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)

bash jq

5
推荐指数
0
解决办法
2万
查看次数

Bash 从命令行替换文件中多个位置的字符串

我有一个包含以下内容的文件。我想替换chromechromeBackup但不是在所有地方。

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)

sed string text-processing replace

2
推荐指数
1
解决办法
316
查看次数

标签 统计

sed ×2

text-processing ×2

awk ×1

bash ×1

jq ×1

replace ×1

string ×1

systemd ×1