- How Change Run Levels In Linux?
- Run Levels
- List Run Levels
- How To Change Run Level
- Boot With Run Level 6
- Run Level With Systemctl
- Get Current Run Level With Systemctl
- Change Run Level With Systemctl
- Linux Changing Run Levels
- Linux Find Out Current Run Level Command
- Linux Change Run Level Command
- Runlevel And Its Usage
- More About getty
- How to Limit Process at User Level on Linux
- Check all current limits
- Set ulimit for user
- Set Ulimit for open file
- Set user limit via systemd
- Conclusion
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Runlevel в Linux: что это и с чем едят
- Почему важны уровни доступа
- Сколько уровней выполнения существует?
- Как узнать текущий режим работы?
- Как менять уровень выполнения?
- Linux system против runlevels
- Как поменять уровень выполнения по умолчанию?
- Разница между уровнями выполнения 3 и 5
- Просмотр список служб конкретного уровня
- Под каким уровнем работает процесс
- Меняем уровень запуска приложения
- Проблемы безопасности с уровнями доступа Linux
- Какой уровень выполнения выбрать?
- Можно ли создано новый уровень на Linux?
How Change Run Levels In Linux?
Run Level is a preset operating state in Linux systems. Different run levels have different behavior. How can we change these run levels easily? What are these run levels?
Run Levels
We will explain the run levels and their meanings in this section
- Run Level 0 is shutdown position. Linux system is powered off. Linux systems run levels transitioned to 0 to shut down.
- Run Level 1 is single-user mode there is no network and used rarely
- Run Level 2 is multi-user mode but there is no network file system. This level is used rarely too
- Run Level 3 is the default mode for most of the Linux servers. There is no gui but all other services and features are functional
- Run Level 4 is user-defined
- Run Level 5 is a multi-user GUI mode default for most of the user systems.
- Run Level 6 is used to reboot the system
List Run Levels
Run levels are stores inside the /etc and named with rc0.d , rc1.d , rc.. to the rc6.d . We can list these run level directories and their content with the ls command like below.
List Run Levels
We can see that there are scripts which starts with K , S . K means kill and the given script is used to stop or kill related service. S means start` and the given script will start the related service.
How To Change Run Level
Run levels can be changed easily. To change run level root privilege is required.
This will change the current run level to run level 3
Boot With Run Level 6
We can reboot Linux system by changing to run level 6 like below
This is the same as reboot command
Run Level With Systemctl
In the old days, init was the ruler of the run levels. But times have changed. Now systemctl is the emperor. All most all run-level related operations are done with systemctl.
Get Current Run Level With Systemctl
We can get the current run level with systemctl like below
- As you guess multi.user is equal to run level 3
Change Run Level With Systemctl
We can change run level with systemctl by providing systemctl targets like below
Источник
Linux Changing Run Levels
A question from my email bag:
How do changing run levels affect us or our users?
If you are moving to higher run levels, you may make additional services available to users, while moving to a lower run level will causes to services (daemons) to become unavailable. On the production server run level 3 is the normally used and rarely changed. However, some administrative tasks require the administrator to move system to run level 1 i.e single user mode.
Linux Find Out Current Run Level Command
Type the following command:
$ who -r
Sample outputs:
Linux Change Run Level Command
Use the init command to change rune levels:
# init 1
Runlevel And Its Usage
The Init is the parent of all processes with PID # 1. Its primary purpose is to create processes from a script stored in the file /etc/inittab file. This file usually has entries which cause init to spawn gettys on each line that users can log in. A runlevel is nothing but a software configuration of the Linux system which allows only a selected group of processes to exist. The processes spawned by init for each of these runlevels are defined in the /etc/inittab file. Init can be in one of eight runlevels as follows:
- Runlevel 0 is halt
- Runlevel 1 is single-user
- Runlevels 2-5 are multi-user (some distro uses RUN level 5 to start X [KDE/Gnome])
- Runlevel 6 is for rebooting system
For example, typing the init 3 command will move system to run level 3:
On most Linux server system default run level is 3 and on most Linux Desktop system default run level is 5. The default run level is defined by the initdefault line at the top of /etc/inittab file under CentOS / Fedora / Redhat / RHEL / Debian Linux. To change the default run level, edit /etc/inittab file, and edit entry initdefault:
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Set initdefault to 5, so that you can boot to X next time when Linux comes up:
Save and close the file. Reboot the system to see changes:
# reboot
More About getty
getty is the program which opens a tty port, prompts for a login name and password (via /bin/login command). Your console displays a login/password prompt at run levels 1 through 6. You can use ALT+F1…ALT+F6 keys to switch console (use CTRL+ALT+F1..F6 under X windows).
Источник
How to Limit Process at User Level on Linux
When the system is heavily used, it would be a big challenge for system administrators to manage resources. Ulimit (user limit) is a powerful command which helps to limit resources on your system.
Sometime, but not very often a single user may start too many processes to make the system unstable. To mitigate this we can use ulimit command to limit the number process each user or group can run.
In this tutorial, we learn how to limit the process at user level on Linux.
With ulimit you can set two kinds of limits:
- Hard limit: This limit is for security purpose. Hard limit can be increased only done by root (ie a non root process cannot go above a hard limit)
- Soft limit: This limit can be changed by process at any time. A non user can set a limit between (0 and hard limit) for its processes.
Check all current limits
You can check all the limits for the currently logined user.
Run the following ulimit command with -a option:
You can see that there are some unlimited settings. These limits can be changed.
Note: The /proc file-system stores the per-process limits in the file system object located at /proc/4548/limits , where ‘4548’ is the process’s PID or process identifier.
Set ulimit for user
You can use ulimit -u to find max user processes or nproc limit.
You can change max user processes by the following command:
If you get any error or unable to change check if you have set any limits in ‘/etc/security/limits.conf’.
Limits can be set for specific user or group in limits.con file.
If you want to set ‘infrateam’ to have more process than ‘testers’ and limit user bob nproc to ’60’, then set as follows:
Here we set limit to open files using ‘nofile’ field. As we set soft limit, user will get warnings when they reach the lower limit.
Set Ulimit for open file
We can use ulimit command to view the limits open files for each user.
Check the user level open file hard limit
Check the user level open file soft limit
If you want to change the current open file limits (soft or hard) you can update in ‘limits.conf’ file.
In our example, we will set the maximum number of files to 16384 for all users of the system.
Reboot your machine and test the new limits configuration
To check Linux system-wide current maximum number of open file, then run the following command:
To change maximum number of open file run following commands:
to make it persistent after reboot update in ‘sysctl.conf’ file
Set user limit via systemd
Earlier we discussed that we can set limits by editing the /etc/security/limits.conf file but systemd would ignore this file.
Systemd by default reads from ‘/etc/systemd/system.conf’ file. Below are systemd limits equivalent to ulimits.
You can set user limit by editing the /etc/systemd/user.conf file.
For example, you can try as below:
Some services that are started via systemd ignore the /etc/security/limits.conf file. To face this issue, you should set the limits in the service definition file.
You need to update the service file as following:
Conclusion
In this tutorial, we learned how to use ulimit command to set limit for processes for a user. I hope you enjoyed reading and please leave your suggestions or feedback in the comment section.
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Runlevel в Linux: что это и с чем едят
А какой у тебя уровень?
Уровни выполнения (runlevel) Linux можно представить, как режим, в котором запускается система. Каждый из этих режимов обладают своими процессами, которые включены или выключены в зависимости от запущенного уровня выполнения. С момента загрузки Linux выполняется в одном из режимов, нельзя запускать систему в нескольких режимах, но есть возможность переключаться между уровнями во время работы на компьютере.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Например, при запуске системы с графическим интерфейсом выполняется один уровень, а если запускать систему в режиме командной строки выполнится другой. Это происходит потому, что режиму GUI нужны доступы к тем процессам, в которых командная строка не нуждается. В зависимости от того, какие службы нужно включить, а какие выключить система меняет уровни выполнения.
Почему важны уровни доступа
Вы можете годами пользоваться системой Linux, даже не понимая разницу между уровнями доступа, так как эта опция не является часто конфигурируемой.
Тем не менее уровни выполнения Linux дают администраторам повышенный контроль над системой.
Режим, в котором работает система, может быть изменен (как это сделать будет показано далее), как и сервисы, которые выполняются в этом режиме. Это позволяет нам полностью контролировать, к каким службам система будет иметь доступ в данный момент.
Сколько уровней выполнения существует?
В системе Linux есть семь уровней выполнения, которые нумеруются от 0 до 6. Разные дистрибутивы по-разному используют уровни выполнения, так что очень сложно составить список задач, которые выполняет конкретный уровень.
Зато вы сами можете посмотреть какие задачи выполняют уровни доступа вашего дистрибутива. Ниже приведён список уровней выполнения и основных задач, выполняемых ими.
- Runlevel 0 завершает работу системы
- Runlevel 1 однопользовательский режим работы. Чаще всего используется в целях обслуживания и выполнения других административных задач. Это уровень также может называться runlevel S, где S означает single-user. Если вам когда-то приходилось сбрасывать пароль на Linux, то вы вероятно уже пользовались этим режимом.
- Runlevel 2 многопользовательский режим работы без поддержки сетевых служб (демонов).
- Runlevel 3 многопользовательский режим с поддержкой сети, но без графического интерфейса. Чаще всего серверные версии Linux работают именно на этом уровне выполнения.
- Runlevel 4 не используется. Пользователь может настраивать этот уровень исходя из его целей. О том, как это сделать также будет рассказано далее.
- Runlevel 5 этот режим схож с уровнем 3, но тут еще запускается графический интерфейс. В этом режиме работают десктопные версии Linux.
- Runlevel 6 этот уровень перезагружает систему.
Как узнать текущий режим работы?
Чтобы узнать текущий уровень выполнения достаточно ввести команду runlevel в командной строке.
На выводе этой команды две цифры. Первая указывает на предыдущий режим работы, а второй на текущий. На скриншоте вместо первой цифры указана буква N, что значит система изначально запускалась и работает в 5 режиме, о чём говорит вторая цифра 5.
Как менять уровень выполнения?
Текущий уровень выполнения можно менять командой «telinit». Ниже приведён пример смены уровня выполнения на CentOS.
Следует отметить, что эта операция требует прав привилегированного пользователя. Имейте ввиду, что на системах семейства Debian уровни выполнения работают по-другому. Например, Ubuntu в режиме командой строки запускается с уровнем выполнения 5.
После выполнения команды указанной выше, ваш экран может стать пустым. Это потому, что вы остались на пустом терминале, чтобы вернутся на рабочий терминал нажмите комбинацию клавиш Alt+F1.
Если запустить команду runlevel еще раз, то мы увидим, что текущий уровень выполнения 3, а предыдущий 5.
Linux system против runlevels
В последние годы systemd сменила многолетнюю систему уровней доступа (System V init). Фактически он работает по тому же принципу, но использует новые команды, которые в целом используют «runlevel» как «target».
- Runlevel 0 = poweroff.target (runlevel0.target)
- Runlevel 1 = rescue.target (runlevel1.target)
- Runlevel 2 = multi-user.target (runlevel2.target)
- Runlevel 3 = multi-user.target (runlevel3.target)
- Runlevel 4 = multi-user.target (runlevel4.target)
- Runlevel 5 = graphical.target (runlevel5.target)
- Runlevel 6 = reboot.target (runlevel6.target)
По ходу статьи мы изучим systemd и его команды.
Как поменять уровень выполнения по умолчанию?
Может быть очень много причин для того чтобы загружаться с другим уровнем выполнения. Например, системные администраторы в основном используют систему в режиме командой строки, включая графический интерфейс только в случае необходимости.
Именно для таких случаев нужно убедиться, что уровень выполнения по умолчанию 3, а не 5.
В прошлом для этого приходилось редактировать файл /etc/inittab. Вы еще можете увидеть эту практику на некоторых системах. Если вы работаете с ОС, которые давно не обновляются до новых версий, этот путь будет приемлемым.
На скриншоте уровнем выполнения по умолчанию установлен 5.
Но большинство систем Linux отказались от файла /etc/inittab в пользу systemd targets и мы рассмотрим разницу между ними по ходу статьи.
Вы можете не найти в своей системе файл /etc/inittab или же файл inittab выведет вам сообщение с советом использовать systemd.
Чтобы проверить текущий уровень выполнения по умолчанию введите команду
Система вернула нам «graphical.target». Как вы наверное и догадались, это не что иное, как уровень выполнения 5.
Чтобы просмотреть остальные «target» и уровни выполнения, ассоциированные с ними введите команду:
Символьные ссылки указывают на то, что systemd работают так же как и runlevel. Итак, что необходимо сделать, чтобы поменять уровень выполнения по умолчанию? Для этого достаточно создать новую символьную ссылку на интересующую нас цель systemd.
Данной командой мы поменяли режим запуска системы по умолчанию с уровня выполнения 5, на 3 и при следующей загрузке система выполнить именно этот уровень.
Ключ f указывает на то, что перед созданием новой символьной ссылки целевой файл должен быть удален. Это же самое могли бы сделать командой rm.
Чтобы проверит успешно ли применились изменения достаточно повторно ввести команду «systemctl get-default».
Разница между уровнями выполнения 3 и 5
Самыми часто используемыми уровнями выполнения являются уровни 3 и 5. В целом их разница сводится к тому, что 3 это режим командной строки, а 5 режим графического интерфейса.
Конечно, не во всех дистрибутивах выполняется это условие или же ваша система может быть сконфигурирована так, что эти два уровня имеют больше отличий. Дальше мы рассмотрим, как узнать, какие процессы задействованы для того или иного уровня.
Просмотр список служб конкретного уровня
Чтобы просмотреть список служб, доступных для каждого уровня до недавнего времени использовалась команда «chkconfig -list». Если у вас стоит одна из последний версий, системы, то вероятно вы получите ошибку, как на скриншоте ниже:
Чтобы проверить, какие службы запускаются во время загрузки системы в режиме графического интерфейса (уровень выполнения 5 для семейства RedHat), нужно запустить следующую команду:
Чтобы просмотреть список доступных служб другого уровня, просто замените «graphical.target» на нужную.
Под каким уровнем работает процесс
Если нужно посмотреть по каким уровнем выполнения запущена та или иная служба, можно ввести команду:
Например, чтобы посмотреть какой runlevel использует служба sshd, введите команду:
Судя по скриншоту выше, служба sshd запушена под уровнями 2,3 и 4 (multi-user.target)
Меняем уровень запуска приложения
Как было показано выше, демон SSH запущена только на уровнях 2-4. Что если нам нужно, чтобы он работал ещё и на уровне 5? Для этого нужно ввести следующее изменение:
Проблемы безопасности с уровнями доступа Linux
Как было сказано ранее, уровни доступа дают администраторам возможность управлять службами, которые работают в определённых случаях. Такая возможность детального контроля повышает безопасность системы, так как системный администратор может быть уверен, что не запущена ни одна сторонняя служба.
Проблема возникает, когда администратор не знает точно какие службы запущены и, следовательно, не может принять меры по уменьшению площади атаки.
Используя методы из данного руководства, вы можете настроить уровень выполнения по умолчанию и контролировать запущенные приложения. Это, конечно, не уменьшит нагрузку на системные ресурсы, но сервер будет более защищен.
Помните, что надо запускать тот уровень, который вам необходим. Нет смысла запускать систему в графическом режиме, если планируете работать там режиме командной строки.
Каждый уровень выполнения запускает новые службы, большинство из которых работают в фоновом режиме, и вы можете забыть обезопасить их.
Какой уровень выполнения выбрать?
Выбор режима запуска системы полностью зависит от ситуации. В основном используется один из двух режимов: либо runlevel 3, либо runlevel 5.
Если вам удобно работать с командной строкой и вам не нужен графический интерфейс, то уровень выполнения 3 самый подходящий.
Это предотвратит запуск ненужных служб. С другой стороны, если вам хочется работать в десктопном режиме или же вам нужна графическая оболочка для работы какой-то программы, то выберите уровень 5.
Если же нужно запустить систему в режиме обслуживания, то выбирайте уровень 1. В этом режиме в системе будете только вы, так как сетевые службы даже не запущены. Это позволит выполнить обслуживания без сбоя.
В редких случаях появляется необходимость использовать уровень выполнения 4. Это может быть только в том случае, если администратору нужен уровень выполнения для особых задач.
Как вы уже, наверное, заметили, мы не может запускать систему с уровнем 0 и 6, но можно переключаться на них если нужно выключить или перезагрузить систему. Но в этом нет особой необходимости, так как есть команды, которые выполняют эти операции.
Можно ли создано новый уровень на Linux?
Так как система Linux это система бесконечных возможностей, то и создание нового уровня не исключение. Но очень маловероятно, что вам когда-нибудь понадобится это. Но если вы все-таки решили создать новый уровень, то следует начать с копирования существующего уровня и изменения её под свои задачи.
Целевые уровни расположены по следующему пути:
Если хотите создать свой уровень на основе 5-го уровня выполнения, скопируйте искомую директорию в новую:
Затем в новой директории создайте поддиректорую «wants»:
Затем просто создайте символьную ссылку на дополнительные службы в директории /usr/lib/systemd/system, которые необходимы вашему уровню.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник