我想将一个多行字符串写入一个只能以root权限访问的文件.
这是我到目前为止:
sudo cat > /etc/init/myservice.conf <<EOL
start on runlevel [2345]
stop on runlevel [06]
respawn
script
cd ~/somefolder
. venv/bin/activate
exec python manage.py runserver 0.0.0.0:8080
end script
EOL
Run Code Online (Sandbox Code Playgroud)
当这个命令时,我得到的只是"Permission Denied".手动创建文件有效.
输出重定向在 sudo运行之前处理,因此您仍然尝试以自己的身份打开文件,而不是以root身份打开文件.一种选择是使用tee而不是cat,因为tee,而不是当前的shell,将打开文件进行写入.
sudo tee /etc/init/myservice.conf > /dev/null <<EOF
start on runlevel [2345]
stop on runlevel [06]
respawn
script
cd ~/somefolder
. venv/bin/activate
exec python manage.py runserver 0.0.0.0:8080
end script
EOF
Run Code Online (Sandbox Code Playgroud)
虽然使用的分隔符并不重要,但使用指示文件结尾的内容更有意义,而不是结束行 :) tee实际上将其输入写入命名文件和标准输出,但是你不要我需要看看你在写什么,因此重定向到/dev/null.
| 归档时间: |
|
| 查看次数: |
430 次 |
| 最近记录: |