#!/bin/bashset-e
# === DIAGNOSTICS ===echo"--- Permission diagnostics ---"echo"User: $(whoami)"echo"Permissions for /etc/munge:"
ls-ld/etc/munge
echo"Permissions for /var/log/munge:"
ls-ld/var/log/munge
echo"------------------------------"# === CORRECT STARTUP ===# Create required spool directories based on which service is being startedif[["$1"=="slurmctld"]];thenecho"Creating spool directories for slurmctld..."mkdir-p/var/spool/slurm/ctld_state
chown-Rslurm:slurm/var/spool/slurm/ctld_state
elif[["$1"=="slurmd"]];thenecho"Creating spool directories for slurmd..."# %n in slurm.conf is replaced by the hostnameHOSTNAME=$(hostname)mkdir-p"/var/spool/slurm/slurmd_node_${HOSTNAME}"chown-Rslurm:slurm"/var/spool/slurm/slurmd_node_${HOSTNAME}"fi# Start the munge daemon as the 'munge' user.# 'su -s /bin/bash -c "COMMAND" USER' runs a command as another user.echo"Starting munged as the 'munge' user..."
su-s/bin/bash-c"/usr/sbin/munged"munge
# Wait one second to ensure munge is running
sleep2# Determine if this is the master or a worker node,# and start the appropriate Slurm processif[["$1"=="slurmctld"]];thenecho"Starting slurmctld..."# slurmctld must run as root to manage processesexec/usr/sbin/slurmctld-D-f/etc/slurm/slurm.conf
elif[["$1"=="slurmd"]];thenecho"Starting slurmd..."# slurmd must run as root to manage processesexec/usr/sbin/slurmd-D-f/etc/slurm/slurm.conf
elseecho"Error: Must specify 'slurmctld' or 'slurmd' as argument."exit1fi