On a classic SysVinit system, which command prints the previous and the current runlevel, for example the output line 'N 3'?

LPIC-1 Exam 101-500, objective 101. System architecture easy

Draft — not checked yet. This question was written from the published exam objectives and cites the clause it comes from, but nobody has yet read it against that clause and signed for it.

It is kept out of search results and out of mock exams until they have. Read the source below before you take the answer as settled.

The options

Not correct telinit

Wrong. telinit signals init to change to the runlevel given as its argument. It changes the runlevel instead of reporting it.

Correct runlevel

Correct. runlevel prints two fields, the previous runlevel and the current one; N in the first field means there has been no previous runlevel since boot.

Not correct chkconfig --list

Wrong. On Red Hat style systems chkconfig --list shows, per service, which runlevels it is switched on in. That is service configuration, not the current runlevel.

Not correct systemctl get-default

Wrong for a SysVinit system, and it answers a different question anyway: it prints the systemd target the machine boots into by default.

Why

Traditional runlevels: 0 halt, 1 single user, 6 reboot, with 2 to 5 defined by the distribution (Red Hat used 3 for text multi-user and 5 for graphical, Debian used 2 to 5 identically). systemd still emulates the runlevel command and maps runlevel3.target and runlevel5.target onto multi-user.target and graphical.target, so the command usually still answers on a modern system.

Where this comes from

Cited
LPI exam objective 101.3
What it says
Determining the current runlevel and changing it on SysVinit systems.

Practise this

Reading one question is not practice. The trainer will draw a set from objective 101 and space the ones you get wrong.

Practise LPIC-1 Exam 101-500