A shell has been running a data import for some time. You run `renice 10 -p <shell PID>` on the shell itself, but the import process it started earlier keeps running at nice value 0. Why?
LPIC-1 Exam 101-500, objective 103. GNU and Unix commands hard
Machine-checked — no person has signed for it. This question was read against the source cited below by an automated pass, which found no contradiction. That is a weaker claim than it sounds: the same kind of process wrote the question, so it can confirm its own mistake.
Treat it as a good draft rather than as settled fact, and read the source below before you rely on it. It is not used in mock exams here — only questions a person has signed for are.
How these questions are written — where each question comes from, what the verification ledger records, and what happens when one is found wrong.
The options
Correct A process inherits its nice value from its parent at the moment it is created, and renice changes only the processes it is given.
Correct. Inheritance happens once, at fork. Later changes to the parent are not propagated to children that already exist.
Not correct renice may only be applied to the leader of a process group, so the command silently did nothing.
Wrong. renice acts on any process the caller is allowed to touch; -g exists precisely because a group is not the default target.
Not correct The child's nice value is reset to 0 whenever it calls exec.
Wrong. Niceness survives exec; that is exactly why `nice -n 10 command` works at all.
Not correct Nice values above 0 apply only to processes that are competing for CPU, so an I/O-bound import ignores them.
Wrong. The value is set regardless; it only becomes visible in behaviour when there is CPU contention, but ps would still report the new number.
Why
Niceness is a per-process attribute copied to a child at fork and preserved across exec, so it behaves like an inherited default rather than a shared setting. To catch processes that are already running, name them: renice -p for individual PIDs, renice -g for a whole process group, or renice -u for everything a user owns. Renicing the parent only affects children started after the change.
Where this comes from
- Cited
- manual page getpriority(2)
Practise this
Reading one question is not practice. The trainer will draw a short set from objective 103 and space the ones you get wrong.
More questions on this objective
- A user starts a new terminal window in a running graphical desktop session, which launches bash as an interactive shell that is NOT a login shell. Which file in the user's home directory does bash read in that case? machine-checked
- In bash, which history expansion re-runs the entire previous command line? machine-checked
- Which bash command prints the literal five characters $USER instead of the current user name? machine-checked
- You want /opt/bin searched for executables, after all the directories already in PATH, in the current bash session and in every command started from it. Which command does that? machine-checked
- There is a passwd manual page in section 1 (the command) and another in section 5 (the /etc/passwd file format). Which command opens the section 5 page? machine-checked
- Select the TWO true statements about shell variables and the environment in bash. machine-checked