systemctl
ожидает команду (start
, restart
, status
и т. д.)перед блоком (или блоками):
sudo systemctl restart mosquitto
Вы неправильно использовали тот же синтаксис для systemctl
, что и для service
в предыдущей версии вашего вопроса:
sudo service mosquitto restart
Причина того, что и не сработали, заключается в том, что Arch Linux по умолчанию предоставляет несколько меньше мер совместимости и миграции, чем другие операционные системы systemd. Debian Linux и Fedora, например, поставляются с командой service
, совместимой с командой с таким же именем, которая была у них задолго до systemd и которая вызывает systemctl
. Вы не получаете такую команду из коробки ни с Arch Linux, ни с некоторыми «совместимыми» частями самого systemd (c.f. " Почему `init 0 `приводит к "избыточным аргументам" при установке Arch? " ).
Начнем с ls /proc/self/fd
:, который показывает файловые дескрипторы, открытые для процесса ls
. Это три стандартных дескриптора ввода, вывода и ошибки, а также дескриптор каталога ls
— чтение.
ls /proc/$$/fd
показывает файловые дескрипторы, которые все еще открыты в оболочке, пока ls
работает :три стандартных дескриптора и zsh
копия терминального файлового дескриптора (10 ).
Вкладка -, завершающая ls /proc/self/fd/
, показывает дескрипторы файлов, открытые в данный момент для оболочки. В дополнение к тем, которые показаны в ls /proc/$$/fd
, сюда входят файловые дескрипторы, открытые для самого завершения (для файлов в /usr/share/zsh/.../functions
, реализующих завершение ).