nSystemctlCommandsSystem.sh 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. #!/bin/bash
  2. source "sSystemctl.sh"
  3. MARK(){ $e "\e[1;35m";}
  4. #
  5. HEAD()
  6. {
  7. for (( a=2; a<=29; a++ ))
  8. do
  9. TPUT $a 1
  10. $E "\e[35m\xE2\x94\x82 \xE2\x94\x82\e[0m";
  11. done
  12. TPUT 1 1;$E "\033[0m\033[35m┌────────────────────────────────────────────────────────────────────────────────┐\033[0m";
  13. TPUT 2 3;$E "\e[36mSystem Commands Системные команды\e[0m";
  14. TPUT 3 1;$E "\e[35m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
  15. TPUT 14 1;$E "\e[35m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
  16. TPUT 15 3;$E "\e[35mRegime Режимы\e[0m";
  17. TPUT 22 1;$E "\e[35m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
  18. TPUT 23 3;$E "\e[35mКрасные команды (отдельно запускающиеся в терминале)\e[0m";
  19. TPUT 27 1;$E "\e[35m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
  20. TPUT 28 3;$E "\e[35mUp \xE2\x86\x91 \xE2\x86\x93 Down Select Enter\e[0m";
  21. }
  22. FOOT(){ MARK;TPUT 30 1;$E "\033[0m\033[35m└────────────────────────────────────────────────────────────────────────────────┘\033[0m";UNMARK;}
  23. #
  24. M0(){ TPUT 4 3; $e "Проверяет работоспособность системы \e[32m is-system-running \e[0m";}
  25. M1(){ TPUT 5 3; $e "Войдите в режим по умолчанию \e[32m default \e[0m";}
  26. M2(){ TPUT 6 3; $e "Войдите в режим спасения \e[33m rescue \e[0m";}
  27. M3(){ TPUT 7 3; $e "Войдите в аварийный режим \e[32m emergency \e[0m";}
  28. M4(){ TPUT 8 3; $e "Выключите и остановите систему \e[31m halt \e[0m";}
  29. M5(){ TPUT 9 3; $e "Выключите и выключите систему \e[31m poweroff \e[0m";}
  30. M6(){ TPUT 10 3; $e "Выключите и перезагрузите систему \e[31m reboot \e[0m";}
  31. M7(){ TPUT 11 3; $e "Выключите и перезагрузите систему через kexec \e[32m kexec \e[0m";}
  32. M8(){ TPUT 12 3; $e "Попросите сервис-менеджера выйти \e[32m exit [EXIT_CODE] \e[0m";}
  33. M9(){ TPUT 13 3; $e "Переключается на другой корневой каталог \e[32m switch-root ROOT [INIT] \e[0m";}
  34. #
  35. M10(){ TPUT 16 3; $e "Описание режимов ";}
  36. M11(){ TPUT 17 3; $e "Приостановить работу системы \e[33m suspend \e[0m";}
  37. M12(){ TPUT 18 3; $e "Спящий режим системы \e[33m hibernate \e[0m";}
  38. M13(){ TPUT 19 3; $e "Спящий режим и приостановка системы \e[33m hybrid-sleep \e[0m";}
  39. M14(){ TPUT 20 3; $e "Приостановить работу системы, перейти в спящий режим \e[33m suspend-then-hibernate \e[0m";}
  40. M15(){ TPUT 21 3; $e "Coн \e[33m sleep \e[0m";}
  41. #
  42. M16(){ TPUT 24 3; $e "Oстановка \e[31m halt \e[0m";}
  43. M17(){ TPUT 25 3; $e "Bыключение \e[31m poweroff \e[0m";}
  44. M18(){ TPUT 26 3; $e "Перезагрузка \e[31m reboot \e[0m";}
  45. #
  46. M19(){ TPUT 29 3; $e "Выход \e[36m Exit \e[0m";}
  47. LM=19
  48. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  49. POS(){ if [[ $cur == up ]];then ((i--));fi
  50. if [[ $cur == dn ]];then ((i++));fi
  51. if [[ $i -lt 0 ]];then i=$LM;fi
  52. if [[ $i -gt $LM ]];then i=0;fi;}
  53. REFRESH(){ after=$((i+1)); before=$((i-1))
  54. if [[ $before -lt 0 ]];then before=$LM;fi
  55. if [[ $after -gt $LM ]];then after=0;fi
  56. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  57. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  58. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  59. INIT(){ R;HEAD;FOOT;MENU;}
  60. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  61. # Функция возвращения в меню
  62. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  63. while [[ "$O" != " " ]]; do case $i in
  64. 0) S=M0;SC; if [[ $cur == enter ]];then R;echo -e "
  65. Проверяет работоспособность системы.
  66. Это возвращает успех (код выхода 0), когда система полностью запущена и работает,
  67. в частности, не в режиме запуска, выключения или обслуживания и без сбойных служб.
  68. В противном случае возвращается ошибка (код выхода не равен нулю).
  69. Кроме того, текущее состояние выводится в виде короткой строки на стандартный
  70. вывод, см. таблицу ниже.
  71. Используйте --quiet для подавления этого вывода.
  72. Используйте --wait, чтобы дождаться завершения процесса загрузки, прежде чем
  73. распечатать текущее состояние и вернуть соответствующий статус ошибки.
  74. Если используется --wait, состояние инициализации или запуска не будет сообщено,
  75. вместо этого команда будет заблокирована до тех пор, пока не будет достигнуто
  76. более позднее состояние (например, работающее или деградированное).
  77. Table 2. is-system-running output:
  78. ┌───────────────┬──────────────────────────────────────────────────────────┬──────┐
  79. │ Name │ Description │ Code │
  80. │ │ │ Exit │
  81. ├───────────────┼──────────────────────────────────────────────────────────┼──────┤
  82. │ initializing │ Ранняя загрузка, до достижения basic.target │ > 0 │
  83. │ инициализация │ или входа в состояние обслуживания. │ │
  84. ├───────────────┼──────────────────────────────────────────────────────────┼──────┤
  85. │ starting │ Поздняя загрузка, до того, как очередь заданий станет │ > 0 │
  86. │ запуск │ простаивать в первый раз или будет достигнута одна из │ │
  87. │ │ целей восстановления. │ │
  88. ├───────────────┼──────────────────────────────────────────────────────────┼──────┤
  89. │ running │ Система полностью работоспособна. │ 0 │
  90. │ ход │ │ │
  91. ├───────────────┼──────────────────────────────────────────────────────────┼──────┤
  92. │ degraded │ Система работает, но один или несколько блоков отказали. │ > 0 │
  93. │ вырождающийся │ │ │
  94. ├───────────────┼──────────────────────────────────────────────────────────┼──────┤
  95. │ maintenance │ Спасательная или аварийная цель активна. │ > 0 │
  96. │ обслуживание │ │ │
  97. ├───────────────┼──────────────────────────────────────────────────────────┼──────┤
  98. │ stopping │ Менеджер закрывается. │ > 0 │
  99. │ остановка │ │ │
  100. ├───────────────┼──────────────────────────────────────────────────────────┼──────┤
  101. │ offline │ Менеджер не работает. В частности, это рабочее состояние,│ > 0 │
  102. │ не в сети │ если несовместимая программа выполняется от имени │ │
  103. │ │ системного администратора (PID 1). │ │
  104. ├───────────────┼──────────────────────────────────────────────────────────┼──────┤
  105. │ unknown │ Не удалось определить рабочее состояние из-за нехватки │ > 0 │
  106. │ неизвестный │ ресурсов или другой причины ошибки. │ │
  107. └───────────────┴──────────────────────────────────────────────────────────┴──────┘
  108. ";ES;fi;;
  109. 1) S=M1;SC; if [[ $cur == enter ]];then R;echo -e "
  110. Войдите в режим по умолчанию. Это эквивалентно изоляции systemctl default.target.
  111. Эта операция блокируется по умолчанию,
  112. используйте --no-block для запроса асинхронного поведения.
  113. ";ES;fi;;
  114. 2) S=M2;SC; if [[ $cur == enter ]];then R;echo -e "
  115. Войдите в режим спасения:\e[32m sudo systemctl rescue\e[0m
  116. Это эквивалентно systemctl isolate escape.target. Эта операция блокируется по
  117. умолчанию, используйте --no-block для запроса асинхронного поведения.
  118. ";ES;fi;;
  119. 3) S=M3;SC; if [[ $cur == enter ]];then R;echo -e "
  120. Войдите в аварийный режим. Это эквивалентно изоляции systemctl Emergency.target.
  121. Эта операция блокируется по умолчанию,
  122. используйте --no-block для запроса асинхронного поведения.
  123. ";ES;fi;;
  124. 4) S=M4;SC; if [[ $cur == enter ]];then R;echo -e "
  125. Выключите и остановите систему:
  126. \e[32m sudo systemctl halt\e[0m
  127. Это в основном эквивалентно запуску systemctl halt.target
  128. --job-modeu003dreplace-irreversibly --no-block,
  129. но также печатает сообщение на стене для всех пользователей. Эта команда асин-
  130. хронная; он вернется после постановки в очередь операции остановки, не дожидаясь
  131. ее завершения. Обратите внимание, что операция просто остановит ядро ОС после за-
  132. вершения работы, оставив аппаратное обеспечение включенным. В сочетании с --force
  133. отключение всех запущенных служб пропускается, однако все процессы уничтожаются,
  134. а все файловые системы размонтируются или монтируются только для чтения, после
  135. чего сразу же происходит остановка системы. Если --force указан дважды, операция
  136. выполняется немедленно, без завершения каких-либо процессов или размонтирования
  137. каких-либо файловых систем. Это может привести к потере данных. Обратите внимание,
  138. что когда --force указан дважды, операция halt выполняется самим systemctl, и си-
  139. стемный менеджер не связывается. Это означает, что команда должна завершиться ус-
  140. пешно, даже если произошел сбой системного менеджера.
  141. ";ES;fi;;
  142. 5) S=M5;SC; if [[ $cur == enter ]];then R;echo -e "
  143. Выключите систему:
  144. \e[32m sudo systemctl poweroff\e[0m
  145. #
  146. \e[32m poweroff\e[0m
  147. По большей части это эквивалентно systemctl start poweroff.target
  148. --job-modeu003dreplace-irreversibly --no-block
  149. но также выводит сообщение на стену для всех пользователей. Эта команда асинхрон-
  150. ная; он вернется после того, как операция отключения питания будет поставлена в
  151. очередь, не дожидаясь ее завершения. В сочетании с --force отключение всех запу-
  152. щенных служб пропускается, однако все процессы уничтожаются, а все файловые сис-
  153. темы размонтируются или монтируются только для чтения, после чего немедленно сле-
  154. дует отключение питания. Если --force указан дважды, операция выполняется немед-
  155. ленно, без завершения каких-либо процессов или размонтирования каких-либо файло-
  156. вых систем. Это может привести к потере данных. Обратите внимание, что когда
  157. --force указан дважды, операция отключения питания выполняется самим systemctl,
  158. и системный менеджер не связывается. Это означает, что команда должна завершиться
  159. успешно, даже если произошел сбой системного менеджера.
  160. ";ES;fi;;
  161. 6) S=M6;SC; if [[ $cur == enter ]];then R;echo -e "
  162. Выключите и перезагрузите систему:
  163. \e[32m sudo systemctl reboot\e[0m
  164. #
  165. \e[32m reboot\e[0m
  166. Это в основном эквивалентно запуску
  167. systemctl reboot.target --job-modeu003dreplace-irreversibly --no-block
  168. но также печатает сообщение на стене для всех пользователей. Эта команда асин-
  169. хронная; он вернется после постановки в очередь операции перезагрузки, не дожи-
  170. даясь ее завершения. В сочетании с --force отключение всех запущенных служб про-
  171. пускается, однако все процессы уничтожаются, а все файловые системы размонтируют-
  172. ся или монтируются только для чтения, после чего следует перезагрузка. Если
  173. --force указан дважды, операция выполняется немедленно, без завершения каких-либо
  174. процессов или размонтирования каких-либо файловых систем. Это может привести к
  175. потере данных. Обратите внимание, что когда --force указан дважды, операция пере-
  176. загрузки выполняется самим systemctl, а системный менеджер не связывается. Это
  177. означает, что команда должна завершиться успешно, даже если произошел сбой сис-
  178. темного менеджера. Если указан переключатель --reboot-argumentu003d, он будет
  179. передан как необязательный аргумент системному вызову reboot
  180. ";ES;fi;;
  181. 7) S=M7;SC; if [[ $cur == enter ]];then R;echo -e "
  182. Выключите и перезагрузите систему через kexec.
  183. Это эквивалентно запуску
  184. systemctl kexec.target --job-modeu003dreplace-irreversibly --no-block.
  185. Эта команда асинхронная; он вернется после постановки в очередь операции
  186. перезагрузки, не дожидаясь ее завершения.
  187. В сочетании с --force отключение всех запущенных служб пропускается,
  188. однако все процессы уничтожаются, а все файловые системы размонтируются
  189. или монтируются только для чтения, после чего следует перезагрузка.
  190. ";ES;fi;;
  191. 8) S=M8;SC; if [[ $cur == enter ]];then R;echo -e "
  192. Попросите сервис-менеджера выйти.
  193. Это поддерживается только для диспетчеров пользовательских служб т.е. в сочетании
  194. с параметром --user или в контейнерах и в противном случае эквивалентно отключению
  195. питания. Эта команда асинхронная; он вернется после постановки в очередь операции
  196. выхода, не дожидаясь ее завершения.
  197. Диспетчер служб завершит работу с указанным кодом выхода, если передан EXIT_CODE.
  198. ";ES;fi;;
  199. 9) S=M9;SC; if [[ $cur == enter ]];then R;echo -e "
  200. Переключается на другой корневой каталог и выполняет новый процесс системного
  201. администратора под ним. Это предназначено для использования в начальных
  202. RAM-дисках («initrd») и будет переходить от процесса системного администратора
  203. initrd (он же процесс «init») к основному процессу системного администратора,
  204. который загружается с фактического тома хоста. Этот вызов принимает два аргумента:
  205. каталог, который должен стать новым корневым каталогом, и путь к новому двоичному
  206. файлу системного менеджера под ним для выполнения как PID 1.
  207. Если последний опущен или пустая строка, двоичный файл systemd будет автоматически
  208. найден и используется как init.
  209. Если путь системного менеджера опущен, равен пустой строке или идентичен пути к
  210. двоичному файлу systemd, состояние процесса системного менеджера initrd
  211. передается главному системному менеджеру, что позволяет позже выполнить
  212. самоанализ состояния служб, участвующих в фазе загрузки initrd.
  213. ";ES;fi;;
  214. 10) S=M10;SC;if [[ $cur == enter ]];then R;echo -e "
  215. Suspend to RAM (Ждущий режим):
  216. этот режим используют большинство ноутбуков. И автоматически входят в этот режим
  217. в случае бездействия по истечению определенного периода времени. А так же при
  218. закрытии крышки ноутбука, когда компьютер работает от аккумулятора. В этом режи-
  219. ме питание остается для оперативной памяти, а большинство компонентов отключаются.
  220. Suspend to Disk (Hibernate):
  221. в этом режиме состояние ПК сохраняется в файле подкачки, и система полностью вы-
  222. ключается. Однако включив его, все восстанавливается и вы продолжаете с того
  223. места, где оставались.
  224. Suspend to both (Гибридная приостановка):
  225. здесь состояние машины сохраняется в swap, но система не выключается. А так же
  226. компьютер выполняет приостановку системы в ОЗУ. Если у вас не установлена батарея
  227. тогда, вы можете безопасно возобновить работу системы с диска и продолжить свою
  228. работу. Этот метод намного медленнее, чем приостановка работы в ОЗУ.
  229. ";ES;fi;;
  230. 11) S=M11;SC;if [[ $cur == enter ]];then R;echo -e "
  231. Приостановить работу системы:
  232. \e[32m systemctl suspend\e[0m
  233. Это вызовет активацию специального целевого юнита suspend.target. Эта команда яв-
  234. ляется асинхронной и вернется после успешной постановки в очередь операции приос-
  235. тановки. Он не будет ждать завершения цикла приостановки/возобновления.
  236. Oтключить systemd:
  237. \e[32m sudo systemctl mask suspend.target\e[0m
  238. Далее требуется перезагрузить систему и снова войти.
  239. Проверьте были ли внесены изменения в систему с помощью команды:
  240. \e[32m sudo systemctl status suspend.target\e[0m
  241. Чтобы снова включить ждущий режим и гибернации требуется выполнить команду:
  242. \e[32m sudo systemctl unmask suspend.target\e[0m
  243. ";ES;fi;;
  244. 12) S=M12;SC;if [[ $cur == enter ]];then R;echo -e "
  245. Спящий режим системы.
  246. Это вызовет активацию специального целевого юнита hibernate.target
  247. Эта команда является асинхронной и вернется после успешной постановки в очередь
  248. операции гибернации. Он не будет ждать завершения цикла гибернации/оттаивания.
  249. Oтключить systemd:
  250. \e[32m sudo systemctl mask hibernate.target\e[0m
  251. Далее требуется перезагрузить систему и снова войти.
  252. Проверьте были ли внесены изменения в систему с помощью команды:
  253. \e[32m sudo systemctl status hibernate.target\e[0m
  254. Чтобы снова включить ждущий режим и гибернации требуется выполнить команду:
  255. \e[32m sudo systemctl unmask hibernate.target\e[0m
  256. ";ES;fi;;
  257. 13) S=M13;SC;if [[ $cur == enter ]];then R;echo -e "
  258. Спящий режим и приостановка системы.
  259. Это вызовет активацию специального целевого юнита hybrid-sleep.target.
  260. Эта команда является асинхронной и будет возвращена после того, как операция
  261. гибридного спящего режима будет успешно поставлена в очередь.
  262. Он не будет ждать завершения цикла сна/пробуждения.
  263. Oтключить systemd:
  264. \e[32m sudo systemctl mask hybrid-sleep.target\e[0m
  265. Далее требуется перезагрузить систему и снова войти.
  266. Проверьте были ли внесены изменения в систему с помощью команды:
  267. \e[32m sudo systemctl status hybrid-sleep.target\e[0m
  268. Чтобы снова включить ждущий режим и гибернации требуется выполнить команду:
  269. \e[32m sudo systemctl unmask hybrid-sleep.target\e[0m
  270. ";ES;fi;;
  271. 14) S=M14;SC;if [[ $cur == enter ]];then R;echo -e "
  272. Приостановить работу системы и перевести ее в спящий режим после задержки,
  273. указанной в systemd-sleep.conf. Это вызовет активацию специального целевого
  274. юнита suspend-then-hibernate.target.
  275. Эта команда является асинхронной и будет возвращена после того, как операция
  276. гибридного спящего режима будет успешно поставлена в очередь.
  277. Он не будет ждать завершения цикла сна/пробуждения или гибернации/оттаивания.
  278. Oтключить systemd:
  279. \e[32m sudo systemctl mask suspend-then-hibernate.target\e[0m
  280. Далее требуется перезагрузить систему и снова войти.
  281. Проверьте были ли внесены изменения в систему с помощью команды:
  282. \e[32m sudo systemctl status suspend-then-hibernate.target\e[0m
  283. Чтобы снова включить ждущий режим и гибернации требуется выполнить команду:
  284. \e[32m sudo systemctl unmask suspend-then-hibernate.target\e[0m
  285. ";ES;fi;;
  286. #
  287. 15) S=M15;SC;if [[ $cur == enter ]];then R;echo -e "
  288. Oтключить systemd:
  289. \e[32m sudo systemctl mask sleep.target\e[0m
  290. Далее требуется перезагрузить систему и снова войти.
  291. Проверьте были ли внесены изменения в систему с помощью команды:
  292. \e[32m sudo systemctl status sleep.target\e[0m
  293. Чтобы снова включить ждущий режим и гибернации требуется выполнить команду:
  294. \e[32m sudo systemctl unmask sleep.target\e[0m
  295. ";ES;fi;;
  296. 16) S=M16;SC;if [[ $cur == enter ]];then R;echo -e "";ES;fi;;
  297. 17) S=M17;SC;if [[ $cur == enter ]];then R;echo -e "";ES;fi;;
  298. 18) S=M18;SC;if [[ $cur == enter ]];then R;echo -e "";ES;fi;;
  299. #
  300. 19) S=M19;SC;if [[ $cur == enter ]];then R;exit 0;fi;;
  301. esac;POS;done