You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.9 KiB
59 lines
1.9 KiB
<?php
|
|
|
|
namespace init_systems;
|
|
|
|
// Used by: RHEL, Fedora, Debian, Ubuntu, Arch, openSUSE
|
|
|
|
class systemd {
|
|
|
|
private static function get_valid_action_for_service(string $action): string|false {
|
|
return match($action) {
|
|
'start'=>'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=>'restart',
|
|
};
|
|
}
|
|
|
|
private static function get_valid_action_for_system_ctl(string $action): string|false {
|
|
return match($action) {
|
|
'start'=>'start',
|
|
'stop'=>'stop',
|
|
'status'=>'status',
|
|
'restart'=>'restart',
|
|
'reload'=>'reload',
|
|
'enable'=>'enable',
|
|
'disable'=>'disable',
|
|
default=>'restart',
|
|
};
|
|
}
|
|
|
|
public static function service(string $name, string $action = 'restart') {
|
|
$my_action = get_valid_action_for_service($action);
|
|
exec(self::get_super_user_bin . 'service ' . safe_cmd($name, $my_action), $output, $exit_code);
|
|
display($output);
|
|
check_for_error($exit_code, "Unable to {$action} Service called: {$name}");
|
|
return $exit_code;
|
|
}
|
|
|
|
public static function systemctl(string $name, string $action = 'enable') {
|
|
$my_action = get_valid_action_for_system_ctl($action);
|
|
exec(self::get_bin . 'systemctl ' . safe_cmd($my_action, $name), $output, $exit_code);
|
|
check_for_error($exit_code, "Unable to {$action} Service called: {$name}");
|
|
return $exit_code;
|
|
}
|
|
|
|
}
|
|
|