Skip to content

Instantly share code, notes, and snippets.

@lefthand
Created March 21, 2017 23:26
Show Gist options
  • Save lefthand/6014f0bd108281c4318f21efedefe6b7 to your computer and use it in GitHub Desktop.
Save lefthand/6014f0bd108281c4318f21efedefe6b7 to your computer and use it in GitHub Desktop.
Shell script that will remove old Rundeck executions
#!/bin/bash
# for rundeck with mysql db
# keep last X executions for each job
KEEP=300
cd /var/lib/rundeck/logs/rundeck
JOBS=`find . -maxdepth 3 -path "*/job/*" -type d`
for j in $JOBS ; do
echo "Processing job $j"
ids=`find $j -iname "*.rdlog" | sed -e "s/.*\/\([0-9]*\)\.rdlog/\1/" | sort -n -r`
echo $ids
declare -a JOBIDS=($ids)
if [ ${#JOBIDS[@]} -gt $KEEP ]; then
for job in ${JOBIDS[@]:$KEEP};do
echo " * Deleting job: $job"
echo " rm -rf $j/logs/$job.*"
rm -rf $j/logs/$job.*
wfid=$(mysql rundeckdb -e "SELECT workflow_id FROM execution WHERE id = $job\G" | awk '/workflow_id/{print $2}')
wfsid=$(mysql rundeckdb -e "SELECT group_concat(workflow_step_id) wfsid FROM workflow_workflow_step WHERE workflow_commands_id = $wfid\G" | awk '/wfsid/{print $2}')
echo " mysql rundeckdb -e 'DELETE FROM log_file_storage_request WHERE execution_id=$job'"
mysql rundeckdb -e "DELETE FROM log_file_storage_request WHERE execution_id=$job"
echo " mysql rundeckdb -e 'DELETE FROM execution WHERE id=$job'"
mysql rundeckdb -e "DELETE FROM execution WHERE id=$job"
echo " mysql rundeckdb -e 'DELETE FROM base_report WHERE jc_exec_id=${job}'"
mysql rundeckdb -e "DELETE FROM base_report WHERE jc_exec_id='${job}'"
echo " mysql rundeckdb -e 'DELETE FROM workflow WHERE id = $wfid'"
mysql rundeckdb -e "DELETE FROM workflow WHERE id = $wfid"
echo " mysql rundeckdb -e 'DELETE FROM workflow_workflow_step WHERE workflow_commands_id = $wfid'"
mysql rundeckdb -e "DELETE FROM workflow_workflow_step WHERE workflow_commands_id = $wfid"
echo " mysql rundeckdb -e 'DELETE FROM workflow_step WHERE id IN ($wfsid)'"
mysql rundeckdb -e "DELETE FROM workflow_step WHERE id IN ($wfsid)"
done
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment