Files
linux.softwareshinobi.com/landing/docs/Bash-Scripts/015-writing-your-first-bash-script.md
Software Shinobi 7d9171c854
All checks were successful
learn org at code.softwareshinobi.com/linux.softwareshinobi.com/pipeline/head This commit looks good
reworking content
2025-06-19 10:03:08 -04:00

2.6 KiB

Your First Bash Script

Time to build your first Bash script. We'll create a script to monitor server status, including:

  • Disk usage
  • CPU load
  • RAM usage (Memory)
  • TCP connections
  • Kernel version

Customize as needed.

Script Setup

First, create your script file, status.sh:

touch status.sh

Open status.sh with your text editor. Start with the shebang, #!/usr/bin/env bash. This tells the system how to execute the script.

Add initial comments for clarity:

#!/usr/bin/env bash

# Script to report current server status.

Variables

Variables store data. Assign values using = (no spaces). Use $() for command substitution.

Capture the server's hostname:

server_name=$(hostname)

Echo the variable to see its value:

echo "${server_name}"

Functions

Functions group commands for reuse. Let's create one for memory usage:

function memory_check() {
    echo ""
    echo "Memory usage on ${server_name}: "
    free -h
    echo ""
}

This function prints a message and calls free -h for memory details. Call it by name (no parentheses):

memory_check

Before seeing the complete solution, try implementing functions for:

  • Disk usage
  • CPU load
  • TCP connections
  • Kernel version

Google commands if needed. There are multiple valid approaches.

The Complete Script

Here's the full status.sh script:

#!/usr/bin/env bash

##
# Server status script:
#   - Memory usage
#   - CPU load
#   - TCP connections
#   - Kernel version
##

server_name=$(hostname)

function memory_check() {
    echo ""
    echo "Memory usage on ${server_name}: "
    free -h
    echo ""
}

function cpu_check() {
    echo ""
    echo "CPU load on ${server_name}: "
    echo ""
    uptime
    echo ""
}

function tcp_check() {
    echo ""
    echo "TCP connections on ${server_name}: "
    echo ""
    cat /proc/net/tcp | wc -l
    echo ""
}

function kernel_check() {
    echo ""
    echo "Kernel version on ${server_name}: "
    echo ""
    uname -r
    echo ""
}

function all_checks() {
    memory_check
    cpu_check
    tcp_check
    kernel_check
}

all_checks

Save status.sh, then make it executable and run:

chmod +x status.sh
./status.sh

Conclusion

Bash scripting combines Linux commands to automate routine tasks, freeing you for more impactful work. This basic script demonstrates the power of automation.

{notice} This content was inspired by a piece by softwareshinobi on Dev Team Six.