• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Screen ./tfs.sh

Dorianek

Member
Joined
Nov 29, 2018
Messages
252
Reaction score
10
Location
Poland
Screen starts, but after reboot does not want to restart the server


tfs.sh

C++:
#!/bin/bash

rm screenlog.*

ulimit -c unlimited

screen -L -S Classic ./tfs;
 
Solution
A bash script doesn't execute itself just like that when rebooting the server.
You might also want to consider giving the full path of TFS in the script.
Now to making a script automatically restarting:

First make a script that automatically restarts tfs, here you can get creative (for example including PIDs, config and ini files, etc) but to keep it simple lets do it like this:

Bash:
#!/bin/bash
while true; do /path/to/tfs; done

Now to make this automatically execute, we will create a service
To do so, create a file called (for example) TFS in /etc/init.d
touch /etc/init.d/TFS
This file should contain the following code -- Modify the paths, script, user, etc so it fits your server!
Bash:
#!/bin/sh
### BEGIN INIT...
A bash script doesn't execute itself just like that when rebooting the server.
You might also want to consider giving the full path of TFS in the script.
Now to making a script automatically restarting:

First make a script that automatically restarts tfs, here you can get creative (for example including PIDs, config and ini files, etc) but to keep it simple lets do it like this:

Bash:
#!/bin/bash
while true; do /path/to/tfs; done

Now to make this automatically execute, we will create a service
To do so, create a file called (for example) TFS in /etc/init.d
touch /etc/init.d/TFS
This file should contain the following code -- Modify the paths, script, user, etc so it fits your server!
Bash:
#!/bin/sh
### BEGIN INIT INFO
# Provides:          TFS
# Required-Start:    $local_fs $network $named $time $syslog
# Required-Stop:     $local_fs $network $named $time $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       foo
### END INIT INFO

SCRIPT="screen -dmS tfs /path/to/your/restart/script"
RUNAS=tfs

PIDFILE=/var/run/TFS.pid
LOGFILE=/var/log/TFS.log

start() {
  if [ -f $PIDFILE ] && kill -0 $(head -1 $PIDFILE); then
    echo 'Service already running' >&2
    return 1
  fi
  echo 'Starting service…' >&2
  local CMD="$SCRIPT > \"$LOGFILE\" & echo \$!"
  su -s "/bin/sh" -c "$CMD" $RUNAS > "$PIDFILE"
  echo 'Service started' >&2
}

stop() {
  if [ ! -f "$PIDFILE" ] || ! kill -0 $(head -1 "$PIDFILE"); then
    echo 'Service not running' >&2
    return 1
  fi
  echo 'Stopping service…' >&2
  kill -15 $(head -1 "$PIDFILE") && rm -f "$PIDFILE"
  kill $(screen -list | grep tfs | cut -d'.' -f1)
  echo 'Service stopped' >&2
}

uninstall() {
  echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] "
  local SURE
  read SURE
  if [ "$SURE" = "yes" ]; then
    stop
    rm -f "$PIDFILE"
    echo "Notice: log file is not be removed: '$LOGFILE'" >&2
    update-rc.d -f TFS remove
    rm -fv "$0"
  fi
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  uninstall)
    uninstall
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|uninstall}"
esac

Make sure the user chosen has access to the PID and the LOG file.

Now to enable this you need to do the following:
sudo chmod +x /etc/init.d/TFS sudo update-rc.d TFS defaults sudo update-rc.d TFS enable sudo systemctl daemon-reload sudo service TFS start


A quick FYI: I didn't test it, just wrote it within the last 2 minutes, but it should work, tell me if it doesn't and I'll modify it.
 
Last edited:
Solution
Back
Top