我正在尝试将文件写入磁盘作为ExecStartPresystemd 单元文件命令的一部分。
这就是我正在使用的:
[Unit]
Description=My service
[Service]
Restart=always
StartLimitInterval=0
ExecStartPre=/usr/bin/cat <<EOFDefaults > /tmp/test
option1=value1
option2=value2
EOFDefaults
ExecStart=/run/some/command
Run Code Online (Sandbox Code Playgroud)
由于这是一个多行命令,因此在使用systemd-analyze verify myservice.service.
所以,我试图逃避多行:
[Unit]
Description=My service
[Service]
Restart=always
StartLimitInterval=0
ExecStartPre=/usr/bin/cat <<EOFDefaults > /tmp/test \
option1=value1 \
option2=value2 \
EOFDefaults
ExecStart=/run/some/command
Run Code Online (Sandbox Code Playgroud)
测试单元文件时,出现以下错误: Invalid escape sequences in command line:
作为 systemd 单元文件命令的一部分,如何使用 cat 将多行内容写入文件?
小智 5
你没有。请参阅命令行上的文档部分:
此语法旨在与 shell 语法非常相似,但只能理解以下段落中描述的元字符和扩展。具体来说,不支持使用“<”、“<<”、“>”和“>>”的重定向,使用“|”的管道,使用“&”在后台运行程序以及其他shell语法元素。
您可以通过首先使用以下内容调用 shell 来执行此操作:
ExecStartPre=/bin/sh -c '/usr/bin/cat <<EOFDefaults > /tmp/test \
option1=value1 \
option2=value2 \
EOFDefaults'
Run Code Online (Sandbox Code Playgroud)
然而,它很快就会变得杂乱无章。
我要做的是将它放在一个单独的 shell 脚本中,并从服务定义中调用它。一般来说,最好保持服务定义尽可能清晰。
| 归档时间: |
|
| 查看次数: |
11744 次 |
| 最近记录: |