[Unit]
Description=test
After=network-online.target
[Service]
ExecStart=python3.11 test.py
WorkingDirectory=/home/test
Type=simple
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
systemctl --user enable test.service
sudo reboot
test@host:~$ systemctl --user status test.service
● test.service - test
Loaded: loaded (/home/test/.config/systemd/user/test.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Вы вошли в систему под нужным пользователем?
автоматически запускается только при входе в систему пользователя
Системный :)
Какая версия Systemd?
А мне нужно тупо запустить программу без привилегий при загрузке системы.
[Unit]
Description=test
After=network-online.target
[Service]
User=test
ExecStart=python3.11 test.py
WorkingDirectory=/home/user/test
Type=simple
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
User=test
и даже Group=test
, получается ошибка:test@host:~$ systemctl --user status test.service
● test.service - test
Loaded: loaded (/home/test/.config/systemd/user/test.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Sat 2023-02-18 23:34:54 MSK; 1s ago
Process: 82102 ExecStart=python3.11 test.py (code=exited, status=216/GROUP)
Main PID: 82102 (code=exited, status=216/GROUP)
test@host:~$ users
test
test@host:~$ groups
test sudo
sudo journalctl -u test.service
/etc/systemd/system/
делайте sudo systemctl daemon-reload
и включайте сервис:sudo systemctl enable --now test.service
test@host:~$ sudo journalctl -u test.service
-- Logs begin at Wed 2022-09-07 18:15:44 MSK, end at Sat 2023-02-18 23:39:07 MSK. --
-- No entries --
User=test
в файле сервиса, то ваш сервис будет запускаться от имени пользователя "test" без всяких повышенных привилегий, даже если он является системным и запускается при загрузке. если вы указываете User в файле сервиса, сервис должен быть системным.
test@host:~$ systemctl status test.service
● test.service - test
Loaded: loaded (/etc/systemd/system/test.service; disabled; vendor preset: enabled)
Active: inactive (dead)
test@host:~$ sudo journalctl -u test.service
-- Logs begin at Thu 2022-09-08 19:01:19 MSK, end at Sat 2023-02-18 23:44:41 MSK. --
Feb 18 23:42:10 DigitalFortress systemd[1]: Started test.
Feb 18 23:42:16 DigitalFortress systemd[1]: Stopping test...
Feb 18 23:42:16 DigitalFortress systemd[1]: test.service: Succeeded.
Feb 18 23:42:16 DigitalFortress systemd[1]: Stopped test.
не понимаю, что вы хотите.
Я хочу, чтобы программа устанавливалась, запускалась и работа без sudo, т.е. пользователю достаточно было просто запустить её, не вызывая системного администратора.
.config/autoload
Запустить скрипт при запуске системы, без необходимости логиниться/подключаться по ssh/иначе взаимодействовать с пользователем. Скрипт должен работать с правами пользователя, устанавливаться также с правами пользователя без sudo.
loginctl enable-linger <username>
Но если использовать sudo ...
Я хочу, чтобы программа устанавливалась, запускалась и работа без sudo, т.е. пользователю достаточно было просто запустить установочный скрипт, не вызывая системного администратора (даже для чтения журнала и отправки отчёта об ошибке).
~/.config/autostart/
.config/autoload
ооох!!!! Вы меня не хотите слышать! И темните, уж не знаю почему.
У вас графическое приложение!
sleep(999)
. Поверьте, это не графическое приложение.Автощапуск возмоден только после логина пользователя. Для этого нужно создать desktop-файл и положить его в . config/autoload
Мутите и темните - sleep ставится за 5 чекунд и Вы это знаете!
Все они по разному стартуют и ведут себя! Все три по разному ставятся в автозапуск!
from time import sleep; sleep(999)
. Неважно, каким образом он будет запускаться при загрузке, к какому типу автозагрузки он относится. Я просто хочу его запустить. Неужели это невыполнимая задача для линукса?Если уж сравнивать с виндовс - то там ровно таже самая ситуация!
Я больше не хочу продолжать дисскуссию, ибо Вы не хотите разбираться.
Более чем уверен, что ровно те же самы проблемы у вас будут при старте сервиса в винде от имени пользователя!
leah@asus-zenbook ~> cat .config/systemd/user/mytest.service
[Unit]
Description=Test python service
[Service]
Type=simple
ExecStart=/usr/bin/python /home/leah/mytest.py
Restart=on-failure
[Install]
WantedBy=default.target
leah@asus-zenbook ~> cat mytest.py
from datetime import datetime
from time import sleep
while(True):
print("Hello, time is {time:%Y-%m-%d %H:%M:%S}".format(time=datetime.now()))
sleep(10)
leah@asus-zenbook ~> systemctl --user enable mytest
leah@asus-zenbook ~> systemctl --user start mytest
leah@asus-zenbook ~> systemctl --user status mytest
● mytest.service - Test python service
Loaded: loaded (/home/leah/.config/systemd/user/mytest.service; enabled; preset: enabled)
Active: active (running) since Sun 2023-02-19 12:39:58 MSK; 1min 24s ago
Main PID: 1001 (python)
Tasks: 1 (limit: 9337)
Memory: 8.1M
CPU: 20ms
CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/mytest.service
└─1001 /usr/bin/python /home/leah/mytest.py
Feb 19 12:39:58 asus-zenbook systemd[987]: Started Test python service.
leah@asus-zenbook ~>
test@host:~$ cat .config/systemd/user/test.service
[Unit]
Description=test
After=network-online.target
[Service]
ExecStart=python3.11 mytest.py
WorkingDirectory=/home/test
Type=simple
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
test@host:~$ cat .config/systemd/user/mytest.service
[Unit]
Description=Test python service
After=network-onine.target
[Service]
Type=simple
ExecStart=python3.11 mytest.py
WorkingDirectory=/home/test
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
$ cat .config/systemd/user/mytest.service
[Unit]
Description=Test python service
After=network-onine.target
[Service]
Type=simple
ExecStart=python3.11 mytest.py
WorkingDirectory=/home/test/mytest
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
$ systemctl --user status mytest.service
● mytest.service - Test python service
Loaded: loaded (/home/test/.config/systemd/user/mytest.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-02-20 13:13:53 MSK; 8min ago
Main PID: 1224 (python3.11)
CGroup: /user.slice/user-1001.slice/user@1001.service/mytest.service
└─1224 /usr/bin/python3.11 mytest.py
$ cat .config/systemd/user/test2.service
[Unit]
Description=Test 2
After=network-online.target
[Service]
ExecStart=python3.11 mytest.py
WorkingDirectory=/home/test/test2
Type=simple
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
$ systemctl --user status test2.service
● test2.service - Test 2
Loaded: loaded (/home/test/.config/systemd/user/test2.service; enabled; vendor preset: enabled)
Active: inactive (dead)
cat .config/systemd/user/test2.service
systemctl --user cat test2
systemctl --user edit test2
systemctl --user --full edit test2
systemctl --user --type=service --all list-units
dos2unix ФАЙЛ
mac2unix ФАЙЛ
WorkingDirectory=/home/test/mytest
WorkingDirectory=/home/test/test2
cd /home/test && tree -up -L 1 mytest test2
И да, я бы с пользовательским сервисом не заходил бы вне каталога пользователя...