Этот ответ в основном основан на документации для systemd.kill , но был обновлен после проведения некоторых тестов. Следует признать, что это не идеальное решение этой проблемы.
УстановивSendSIGKILL=no
в вашем юнит-файле, можно предотвратить уничтожение процесса. Чтобы разрешить отправку начального SIGTERM
, вам, вероятно, потребуется восстановить для параметра KillMode
его значение по умолчанию, то есть control-group
.
С этими настройками запуск systemctl stop machine.service
должен работать следующим образом:
Поскольку в юнит-файле не указаны команды ExecStop=
, процессу отправляется SIGTERM
.
По прошествии 90 секунд (DefaultTimeoutStopSec
), systemd
рассматривает принудительное завершение процесса.
Поскольку для SendSIGKILL
установлено значение no
,SIGKILL
(FinalKillSignal
)— это , а не , которое отправляется процессу, и процесс продолжает работать.
Фактически, единственным сигналом, отправленным процессу на systemctl stop
, будет SIGTERM
. Поскольку обработка SIGTERM
выполняется внутри самого приложения, systemctl stop
должно работать так, как задумано :останавливает приложение, когда удаленная машина не работает,время ожидания, когда удаленная машина работает.
Проблема с этим подходом отмечена Михал Политовски в комментариях. А именно, systemd
будет считать устройство неисправным по истечении тайм-аута остановки. Это не повлияет на сам процесс, но изменит точку зрения systemd на процесс. Если вы выполните еще одну команду «systemctl start», пока устройство находится в этом состоянии, вы получите два процесса.
Опция KillMode=none
, которую вы уже использовали, полностью исключает логику завершения процесса. Однако результаты аналогичны этому подходу. Состояние объекта меняется на неактивное, а процессы продолжают работать.
В качестве дополнительного примечания, 90-секундный тайм-аут можно настроить с помощью TimeoutStopSec
.
Вам придется привыкнуть к использованию sudo
, это означает S uper U ser Do и это как ввести пароль администратора в Windows это правда жизни.
Вы хотите установить драгоценные камни как ваш пользователь (ubuntu
), а не в системе в целом? Это объясняется здесь:
https://stackoverflow.com/questions/31596273/install-gem-in-local-folder
sudo
так, чтобы пароль -не разрешался. См. предостережения выше. sudo
, какие разрешения или возможности необходимы. Тогда исправьте проблему. . если вы устанавливаете программное обеспечение, нужно ли его устанавливать глобально или его можно установить только для одного пользователя.
Содержимое файла при выполненииvisudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
Поскольку вы сказали raspberry pi и делаете то, что делаете, где и где на таком оборудовании, вам может не понадобиться полномасштабная безопасность Linux; нет ничего плохого в том, чтобы открывать что-то в Linux, когда вы находитесь в рабочей среде. Просто поймите, как только вы начинаете работать в сети, а другие могут получить либо физический, либо сетевой доступ, у вас есть потенциальная проблема безопасности
Просто добавьте строку
ubuntu ALL=(ALL) ALL
вы также можете заменить ubuntu
на слово ALL
, которое затем позволяет любой учетной записи в Linux делать что-либо без запроса пароля, как root. Нет ничего плохого в том, чтобы понять и свободно заявить об этом, каждый должен понимать, что там за файл sudo, и понимать, что в нем написано и что там должно и не должно быть.
Я не знаком с Ubuntu Linux. Я не знаю, есть ли функция автоматического входа или входа без пароля ; Я ожидаю, что он позволит войти в систему как root
, введя пароль для этой учетной записи. Дистрибутивы Linux различаются уровнем безопасности по умолчанию, который они используют при установке (n-символьных паролей, сложностью и т. д. )Все это технически можно отменить, хотя это не одобряется в 9 из 10 раз, в настройках рабочей среды да, это осуществимо.
Any idea why I have to use sudo for everything? Is that normal?
Да, это нормально. Это уровень безопасности по умолчанию, который в наши дни используют все дистрибутивы Linux по умолчанию после установки, ожидая, что компьютер будет подключен к Интернету. Для rpi, в настройках рабочего места, да, вы можете ослабить некоторые элементы безопасности, чтобы упростить задачу.