diff --git a/start_vscode.sh b/start_vscode.sh
index d8bc9f4e38436f35602e776995abf99cd547def5..98828adb0d4f16e9db99264b928d3208fa66e8a5 100644
--- a/start_vscode.sh
+++ b/start_vscode.sh
@@ -52,6 +52,9 @@ VSC_MEM_PER_CPU_CORE=1024
 # Number of GPUs default        : 0 GPUs
 VSC_NUM_GPU=0
 
+# Waiting interval default      : 60 seconds
+VSC_WAITING_INTERVAL=60
+
 # SSH key location default      : no default
 VSC_SSH_KEY_PATH=""
 
@@ -69,7 +72,7 @@ Options:
 
         -u | --username       USERNAME         ETH username for SSH connection to Euler
         -n | --numcores       NUM_CPU          Number of CPU cores to be used on the cluster
-        -W | --runtime        RUN_TIME         Run time limit for the jupyter notebook in hours and minutes HH:MM
+        -W | --runtime        RUN_TIME         Run time limit for the code-server in hours and minutes HH:MM
         -m | --memory         MEM_PER_CORE     Memory limit in MB per core
 
 Optional arguments:
@@ -94,8 +97,9 @@ Format of configuration file:
 VSC_USERNAME=""             # ETH username for SSH connection to Euler
 VSC_NUM_CPU=1               # Number of CPU cores to be used on the cluster
 VSC_NUM_GPU=0               # Number of GPUs to be used on the cluster
-VSC_RUN_TIME="01:00"        # Run time limit for the jupyter notebook in hours and minutes HH:MM
+VSC_RUN_TIME="01:00"        # Run time limit for the code-server in hours and minutes HH:MM
 VSC_MEM_PER_CPU_CORE=1024   # Memory limit in MB per core
+VSC_WAITING_INTERVAL=60     # Time interval to check if the job on the cluster already started
 VSC_SSH_KEY_PATH=""         # Path to SSH key with non-standard name
 
 EOF
@@ -146,6 +150,11 @@ do
                 shift
                 shift
                 ;;
+                -i|--interval)
+                VSC_WAITING_INTERVAL=$2
+                shift
+                shift
+                ;;
                 -k|--key)
                 VSC_SSH_KEY_PATH=$2
                 shift
@@ -239,6 +248,14 @@ else
     echo -e "Memory per core set to $VSC_MEM_PER_CPU_CORE MB"
 fi
 
+# check if VSC_WAITING_INTERVAL is an integer
+if ! [[ "$VSC_WAITING_INTERVAL" =~ ^[0-9]+$ ]]; then
+        echo -e "Error: $VSC_WAITING_INTERVAL -> Waiting time interval [seconds] must be an integer, please try again\n"
+        display_help
+else
+    echo -e "Setting waiting time interval for checking the start of the job to $VSC_WAITING_INTERVAL seconds"
+fi
+
 # set modules
 VSC_MODULE_COMMAND="gcc/6.3.0 code-server/3.12.0 eth_proxy"
 
@@ -289,8 +306,17 @@ echo "Remote IP:\$VSC_IP_REMOTE" >> /cluster/home/$VSC_USERNAME/vscip
 code-server --bind-addr=\${VSC_IP_REMOTE}:8899
 ENDBSUB
 
-# sleep for 5 seconds to let the code-server start
-sleep 5
+# wait until batch job has started, poll every $VSC_WAITING_INTERVAL seconds to check if /cluster/home/$VSC_USERNAME/vscip exists
+# once the file exists and is not empty the batch job has started
+ssh $VSC_SSH_OPT <<ENDSSH
+while ! [ -e /cluster/home/$VSC_USERNAME/vscip -a -s /cluster/home/$VSC_USERNAME/vscip ]; do
+        echo 'Waiting for code-server to start, sleep for $VSC_WAITING_INTERVAL sec'
+        sleep $JNB_WAITING_INTERVAL
+done
+ENDSSH
+
+# give the code-server a few seconds to start
+sleep 7
 
 # get remote ip, port and token from files stored on Euler
 echo -e "Receiving ip, port and token from jupyter notebook"