I developed a simple application using NetCore
, the app write the content on a file every time is executed, this is the code:
using System;
using System.IO;
namespace SimpleApp
{
class Program
{
static void Main(string[] args)
{
using (StreamWriter writer = new StreamWriter("log.txt", true))
{
writer.WriteLine("Hello World");
}
}
}
}
so if I start the application in this way: dotnet SimpleApp.dll
I get a log.txt
file with Hello World
in it.
Now, I'm trying to create a linux daemon, I have no experience in that, so I wrote what I learned on Internet, I created a service cakked console.service
which contains this structure:
[Unit]
Description = Hello World Daemon
[Service]
ExecStart = /usr/bin/dotnet /home/my username/Desktop/publish/SimpleApp.dll
Restart = on-failure
[Install]
WantedBy = multi-user.target
So essentially I have a description, and I setted in ExecStart
the path of my dotnet
installation and the path of the application.
Later I have an Install
that if understood well tell to the systemctl
that the service can run for each user, right?
Later, I copied the service in the system
folder:
sudo cp console.service /lib/systemd/system
and I enabled it:
sudo systemctl daemon-reload
sudo systemctl enable console.service
so, I executed the service:
sudo systemctl start console.service
and when I print the status:
systemctl status console.service
will is displayed this:
the problem's that inside the folder publish
(the path of the application specified in ExecStart) I doesn't have any log.txt at this time.
Why?