私のC ++アプリケーションを実行する.serviceがあります。私のパスは絶対パスです。コマンドラインから起動すると機能しますが、systemdサービスから起動するとファイルを開くことはできません。私のサービスがrootとして実行されていても、サービスの出力はエラー13(許可拒否)です。
サービスステータス:
● myservice.service - myservice
Loaded: loaded (/etc/systemd/system/myservice.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-14-11 08:03:54 PST; 6s ago
Main PID: 105618 (myservice)
CGroup: /system.slice/myservice.service
105618 /etc/EPR/bin/manage
Dec 11 08:03:54 BK systemd[1]: Started myservice.
Dec 11 08:03:55 BK systemd[1]: Unable to write log to file 13
C++コード:
void write_log_to_file(string file_name, string content){
ofstream handle_file(file_name, ios::app);
if(handle_file.is_open()){
string log = string("[") + dkstd::time::get_time_as_string("%d/%m/%Y %H:%M:%S") + string("]: ") + content;
handle_file << log << endl;
handle_file.close();
}
else cout << "Unable to write log to file " << file_name << errno << endl;
}
提供する:
[Unit]
Description=Manage
[Service]
Type=simple
ExecStart=/etc/EPR/bin/manage
KillMode=process
[Install]
WantedBy=multi-user.target
この問題に対する解決策はありますか?