Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature]: LGSM would utilize user-provided file for CRONTAB jobs #4584

Open
irobot73 opened this issue Jun 1, 2024 · 1 comment
Open

[Feature]: LGSM would utilize user-provided file for CRONTAB jobs #4584

irobot73 opened this issue Jun 1, 2024 · 1 comment

Comments

@irobot73
Copy link

irobot73 commented Jun 1, 2024

User story

As a LGSM user, I want LGSM to create its instance of CRONTAB jobs from a user-provided file to allow customization & rapid (re)deployment

Game

7Days2Die

Linux distro

Ubuntu 22.04

Command

command: console

Further information

Would like to be able to create a file {EG: '.crontab'} in the /DATA folder that, if present, will be used to generate that docker's instance of all scheduled jobs via CRONTAB.

As, upon every STOP/START+ of the container, I have to manually modify CRONTAB via the console (miss a few & becomes quite tedious, running multiple servers) since it resets.

Keep the .YML clean(er) as well.

Default upon starting-up:

linuxgsm@599e2cfa8d46:/app$ crontab -l
*/60 * * * * /app/sdtdserver update > /dev/null 2>&1

vs. (mock code change)

[ -f "${CRONTAB_FILE}" ]]; then
     cat /data/.config|crontab -
fi

Giving (mock from file):

linuxgsm@599e2cfa8d46:/app$ crontab -l
## EVERY SUN @ 00:00
0 0 * * 0 /usr/bin/truncate --size 0 /data/log/crontab.log /data/log/rcon.log
## EVERY SUN @ 00:30
30 0 * * 0 /app/*server update-lgsm >> /data/log/crontab.log 2>&1
## EVERY DAY @ 05:00
1 5 * * * /data/RCON/rcon_send_backup_msg.sh sdtd 1 >> /data/log/crontab.log 2>&1
2 5 * * * /data/my_backup.sh >> /data/log/crontab.log 2>&1
## EVERY M,W,F @ 05:30
0 5 * * 1,3,5 /data/RCON/rcon_send_reboot_msg.sh sdtd 30 >> /data/log/crontab.log 2>&1
15 5 * * 1,3,5 /data/RCON/rcon_send_reboot_msg.sh sdtd 15 >> /data/log/crontab.log 2>&1
20 5 * * 1,3,5 /data/RCON/rcon_send_reboot_msg.sh sdtd 10 >> /data/log/crontab.log 2>&1
25 5 * * 1,3,5 /data/RCON/rcon_send_reboot_msg.sh sdtd 5 >> /data/log/crontab.log 2>&1
29 5 * * 1,3,5 /data/RCON/rcon_send_reboot_msg.sh sdtd 1 >> /data/log/crontab.log 2>&1
30 5 * * 1,3,5 /app/*server restart >> /data/log/crontab.log 2>&1

Edit (6/9/24)
Hand-jammed a proof of concept:

sudo nano /app/lgsm/modules/command_start.sh

Find:

fn_print_dots "${servername}"
if [ "${shortname}" == "jk2" ]; then
        fn_start_jk2
else
        fn_start_tmux
fi

New code to add just below:

# If user defined CRONTAB is present, ingest
if [ -f "${HOME}/.crontab" ]; then
        fn_script_log_info "Importing CRONTAB file"
        cat "${HOME}/.crontab" | crontab -
else
        fn_script_log_info "No CRONTAB file to import"
fi

Post-Addition:

...
fn_print_dots "${servername}"
if [ "${shortname}" == "jk2" ]; then
        fn_start_jk2
else
        fn_start_tmux
fi

# If user defined CRONTAB is present, ingest
#
#     Better to utilize 'config-lgsm/_default.cfg' for cross-server usage, ease of use?
#
if [ -f "${HOME}/.crontab" ]; then
        fn_script_log_pass "Importing CRONTAB file"
        cat "${HOME}/.crontab" | crontab -
else
        fn_script_log_info "No CRONTAB file to import"
fi

# Remove starting lockfile when command ends.
...

Test output:

Jun 09 13:42:24.719 pwserver: START: PASS: Started LinuxGSM
Jun 09 13:42:24.822 pwserver: START: PASS: Started LinuxGSM
Jun 09 13:42:24.824 pwserver: START: PASS: Importing CRONTAB file
Jun 09 13:42:24.834 pwserver: RESTART: INFO: LinuxGSM version: v24.2.1
Jun 09 13:42:24.835 pwserver: RESTART: PASS: core_exit.sh exiting with code: 0
@MicLieg
Copy link
Contributor

MicLieg commented Jan 18, 2025

Could be a nice addition to PR #4508

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 🆕 New Issues
Development

No branches or pull requests

2 participants