'start', 'stop'=>'stop', 'status'=>'status', 'restart'=>'restart', 'reload'=>'reload', 'enable'=>'enable', 'disable'=>'disable', 'mask'=>'mask', // disable 'unmask'=>'unmask', // re-enable 'reboot'=>'reboot', 'poweroff'=>'poweroff', 'list-units'=>'list-units', 'list-unit-files'=>'list-unit-files', 'isolate'=>'isolate', // Change system runlevel target 'log'=>'journalctl -u', // View service log 'realtime'=>'journalctl -f', // watch live logs default=>false, }; } private static function getValidActionForSystemCtl(string $action): string|false { return match($action) { 'start'=>'start', 'stop'=>'stop', 'status'=>'status', 'restart'=>'restart', 'reload'=>'reload', 'enable'=>'enable', 'disable'=>'disable', default=>false, }; } public static function service(string $name, string $action = 'restart') { $my_action = self::getValidActionForService($action); exec(self::_doRoot() . \neato::get_super_user_bin . 'service ' . safeCmd($name, $my_action), $output, $exit_code); display($output); checkForError($exit_code, "Unable to {$action} Service called: {$name}"); return $exit_code; } public static function systemctl(string $name, string $action = 'enable') { $my_action = self::getValidActionForSystemCtl($action); exec(self::_doRoot() . \neato::get_bin . 'systemctl ' . safeCmd($my_action, $name), $output, $exit_code); checkForError($exit_code, "Unable to {$action} Service called: {$name}"); return $exit_code; } }