![为什么我的 systemd 服务会创建写保护文件?](https://linux22.com/image/216480/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%20systemd%20%E6%9C%8D%E5%8A%A1%E4%BC%9A%E5%88%9B%E5%BB%BA%E5%86%99%E4%BF%9D%E6%8A%A4%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我在我的 Ubuntu 22.04 笔记本电脑中创建了一个 systemd 服务,它通过调用 bash 文件来运行 java 程序。
[Unit]
Description=Script to run JMS
[Service]
ExecStart=bash /home/user/Desktop/path_to_my_file/run_java.sh
[Install]
WantedBy=run_jms.target
当我启动这个过程时,java程序生成的所有文件被写保护。但是,如果我直接从命令行执行 bash 文件,生成的文件没有写保护。
如何使 systemd 服务不生成写保护文件?
答案1
如果User
未在 中指定[Service]
,则服务的输出可能属于另一个用户,因此将显示为写保护。要解决这个问题,只需添加一个新行:
[Service]
ExecStart=bash /home/user/Desktop/path_to_my_file/run_java.sh
User=user