Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Service health check script in Bash Scripting - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main purpose of a service health check script?
To automatically check if a service is running properly and alert or take action if it is not.
Click to reveal answer
beginner
In a bash script, how do you check if a service is active using systemctl?
Use the command: systemctl is-active service_name. It returns 'active' if running.
Click to reveal answer
beginner
What does the exit status 0 mean in bash scripting?
It means the command or script ran successfully without errors.
Click to reveal answer
intermediate
Why is it useful to include logging in a service health check script?
Logging helps keep a record of service status checks and any problems found, useful for troubleshooting later.
Click to reveal answer
beginner
What is a simple way to restart a service in a bash script if it is not running?
Use sudo systemctl restart service_name to restart the service.
Click to reveal answer
Which command checks if a service is active in bash?
Aps aux | grep service_name
Bservice status service_name
Csystemctl is-active service_name
Dnetstat -tuln
What does the script usually do if the service is not active?
ARestart the service
BDo nothing
CDelete the service
DPrint 'Service is active'
How can you check the exit status of the last command in bash?
A$#
B$!
C$$
D$?
Why should a health check script run regularly?
ATo catch service failures quickly
BTo slow down the system
CTo use more CPU
DTo delete logs
Which of these is a good practice in a health check script?
ADeleting service files
BLogging status results
CRunning only once
DIgnoring errors
Describe how a simple bash script can check if a service is running and restart it if needed.
Think about commands to check status and restart services.
You got /4 concepts.
    Explain why automating service health checks is helpful in system administration.
    Consider benefits of automation and monitoring.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a service health check script in bash?
      easy
      A. To install new software packages
      B. To check if a service is running or stopped
      C. To delete files from the system
      D. To create new user accounts

      Solution

      1. Step 1: Understand the script's goal

        A service health check script is designed to verify the status of a service, whether it is running or stopped.
      2. Step 2: Compare options with the goal

        Only To check if a service is running or stopped matches the purpose of checking service status; others are unrelated tasks.
      3. Final Answer:

        To check if a service is running or stopped -> Option B
      4. Quick Check:

        Service health check = check running status [OK]
      Hint: Focus on what 'health check' means for a service [OK]
      Common Mistakes:
      • Confusing service check with installation
      • Thinking it manages users
      • Assuming it deletes files
      2. Which of the following is the correct syntax to check the status of a service named nginx using systemctl in bash?
      easy
      A. systemctl status nginx
      B. systemctl check nginx
      C. service nginx status
      D. systemctl run nginx

      Solution

      1. Step 1: Recall systemctl command syntax

        The correct command to check status is systemctl status servicename.
      2. Step 2: Match options with correct syntax

        systemctl status nginx matches the correct syntax. systemctl check nginx uses a wrong verb 'check'. service nginx status uses 'service' command which is older but not systemctl. systemctl run nginx uses 'run' which is invalid here.
      3. Final Answer:

        systemctl status nginx -> Option A
      4. Quick Check:

        systemctl status = check service [OK]
      Hint: Remember: systemctl status + service name checks status [OK]
      Common Mistakes:
      • Using 'check' instead of 'status'
      • Confusing 'service' and 'systemctl'
      • Using 'run' instead of 'status'
      3. What will be the output of this script snippet if the ssh service is running?
      if systemctl is-active --quiet ssh; then
        echo "SSH service is running"
      else
        echo "SSH service is stopped"
      fi
      medium
      A. No output
      B. SSH service is stopped
      C. Syntax error
      D. SSH service is running

      Solution

      1. Step 1: Understand systemctl is-active --quiet

        This command returns success (exit code 0) if the service is active (running), otherwise failure.
      2. Step 2: Follow the if-else logic

        If the service is running, the then branch echoes "SSH service is running"; else branch echoes stopped.
      3. Final Answer:

        SSH service is running -> Option D
      4. Quick Check:

        is-active true = running message [OK]
      Hint: is-active --quiet returns success if running [OK]
      Common Mistakes:
      • Assuming output is from systemctl status
      • Confusing exit codes with output text
      • Missing the echo command effect
      4. Identify the error in this health check script snippet:
      if systemctl status apache2; then
        echo "Apache2 is running"
      else
        echo "Apache2 is stopped"
      fi
      medium
      A. Missing --quiet option causes wrong output
      B. The if statement syntax is incorrect
      C. systemctl status returns output but not exit code for running check
      D. echo commands are missing quotes

      Solution

      1. Step 1: Check systemctl status behavior

        systemctl status outputs verbose service information to stdout every time it is called, which pollutes the output of the health check script with extra details before the echo. Although it returns exit code 0 if active and non-zero (e.g., 3) if stopped, the verbose output makes it unsuitable for clean scripting.
      2. Step 2: Understand correct command for status check

        Use systemctl is-active --quiet to get proper exit code check without any output.
      3. Final Answer:

        systemctl status returns output but not exit code for running check -> Option C
      4. Quick Check:

        Use is-active for exit code check [OK]
      Hint: Use is-active --quiet for exit code, not status [OK]
      Common Mistakes:
      • Assuming systemctl status exit code indicates running
      • Syntax errors in if statement
      • Forgetting quotes in echo
      5. You want to write a bash script that checks multiple services: nginx, mysql, and redis. Which script snippet correctly loops over these services and prints their status using systemctl is-active --quiet?
      hard
      A. for service in nginx mysql redis; do if systemctl is-active --quiet $service; then echo "$service is running" else echo "$service is stopped" fi done
      B. for service in [nginx, mysql, redis]; do if systemctl status $service; then echo "$service is running" else echo "$service is stopped" fi done
      C. for service in nginx mysql redis do systemctl is-active $service echo "$service status checked" done
      D. services=(nginx mysql redis) for service in ${services[@]}; do if systemctl is-active --quiet $service; then echo "$service is running" else echo "$service is stopped" fi done

      Solution

      1. Step 1: Check loop syntax and service list

        for service in nginx mysql redis; do if systemctl is-active --quiet $service; then echo "$service is running" else echo "$service is stopped" fi done uses correct bash for loop syntax with space-separated service names. for service in [nginx, mysql, redis]; do if systemctl status $service; then echo "$service is running" else echo "$service is stopped" fi done uses invalid list syntax with brackets. for service in nginx mysql redis do systemctl is-active $service echo "$service status checked" done misses if condition and uses wrong output. services=(nginx mysql redis) for service in ${services[@]}; do if systemctl is-active --quiet $service; then echo "$service is running" else echo "$service is stopped" fi done uses correct array and loop syntax without $ in variable declaration.
      2. Step 2: Verify status check command usage

        for service in nginx mysql redis; do if systemctl is-active --quiet $service; then echo "$service is running" else echo "$service is stopped" fi done uses systemctl is-active --quiet correctly to check service status and prints appropriate message.
      3. Final Answer:

        for service in nginx mysql redis; do if systemctl is-active --quiet $service; then echo "$service is running" else echo "$service is stopped" fi done -> Option A
      4. Quick Check:

        Correct loop + is-active --quiet = for service in nginx mysql redis; do if systemctl is-active --quiet $service; then echo "$service is running" else echo "$service is stopped" fi done [OK]
      Hint: Use for service in list; do ... done with is-active --quiet [OK]
      Common Mistakes:
      • Using brackets [] for list in for loop
      • Adding $ in for variable declaration
      • Not using is-active --quiet for status check
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard