You want to send a signal to every httpd process, using the process IDs that `pgrep httpd` prints, on one command line. kill takes its PIDs as arguments, not on standard input. Which construct places the output of one command into the argument list of another?
LPIC-1 Exam 101-500, objective 103. GNU and Unix commands easy
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 kill $(pgrep httpd)
Correct. Command substitution runs pgrep, captures its standard output and splits it into words that become kill's arguments. The older backtick form, with pgrep httpd enclosed in backquotes, is equivalent.
Not correct pgrep httpd | kill
Wrong. kill does not read standard input, so the PIDs are discarded and kill complains about missing operands. `pgrep httpd | xargs kill` is the pipe-based way to do it.
Not correct kill ${pgrep httpd}
Wrong. ${...} is parameter expansion, not command substitution; bash rejects it with a bad substitution error because pgrep is not a valid parameter name.
Not correct kill < pgrep httpd
Wrong. < redirects standard input from a file, so the shell tries to open a file called pgrep and passes httpd to kill as its only argument.
Why
There are two distinct ways to feed one command's output to another. A pipe connects it to the second command's standard input, which only helps if that command reads standard input; command substitution with $(...) turns the output into text on the command line, which is what commands like kill, chmod and rm need. xargs bridges the gap by converting standard input into arguments.
Where this comes from
- Cited
- manual page bash(1)
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