diff --git a/probe.c b/probe.c
index 78668072b10ed8e76c825eaf177415e8e6963201..2d19b7a8d0258e8c2570073fcdcdac554de6d869 100644
--- a/probe.c
+++ b/probe.c
@@ -74,11 +74,11 @@ int main(int argc, char *argv[])
 	init_avlogbuf();
 
 	jobid = atoi(argv[1]);
+	ping_job(jobid, "running", 0);
 	if (!strcmp(argv[2], "probe-raw"))
 		path = buildpath(getenv(WORKER_RAW), jstr(jlookup(argv[4], "path"), 0));
 	else
 		path = buildpath(getenv(WORKER_RELEASED), jstr(jlookup(argv[4], "path"), 0));
-	ping_job(jobid, "running", 0);
 
 	opts = 0;
 	av_dict_set_int(&opts, "export_xmp", 1, 0); /* Ignored if not supported */
diff --git a/publish_video.c b/publish_video.c
index 3ef95b8d36894b8f043ca8cad87386c6720e34eb..dfad67ba15773a5e8129f9915a67c629d9928194 100644
--- a/publish_video.c
+++ b/publish_video.c
@@ -13,10 +13,10 @@ int main(int argc, char *argv[])
 	init_env();
 	init_avlogbuf();
 	jobid = atoi(argv[1]);
+	ping_job(jobid, "running", 0);
 	src = buildpath(getenv(WORKER_TMP), jstr(jlookup(argv[4], "source"), 0));
 	dest = buildpath(getenv(WORKER_RELEASED), jstr(jlookup(argv[4], "path"), 0));
 	destdir = dirname(mprintf("%s/%s", getenv(WORKER_RELEASED), jstr(jlookup(argv[4], "path"), "")));
-	ping_job(jobid, "running", 0);
 	overwrite_check(dest, 0, 0);
 	if (mkdir(destdir, 02775) && errno != EEXIST)
 		job_failed("Could not create target directory \"%s\": %s", destdir, strerror(errno));
diff --git a/remux.c b/remux.c
index 725c680434ae23c5bfb54ca8f88ca7512d465b44..3572a80dfc94a0e01747c246ac29271d38b17c02 100644
--- a/remux.c
+++ b/remux.c
@@ -21,11 +21,11 @@ int main(int argc, char *argv[])
 	av_init_packet(&pkt);
 
 	jobid = atoi(argv[1]);
+	ping_job(jobid, "running", 0);
 	path = buildpath(getenv(WORKER_RELEASED), jstr(jlookup(argv[4], "path"), 0));
 	srcpath = buildpath(getenv(WORKER_RAW), jstr(jlookup(argv[4], "srcpath"), 0));
 	tmp = mprintf("%s/.tmp-%i", getenv(WORKER_TMP), jobid);
 	overwrite_check(path, srcpath, jstr(jlookup(argv[4], "srchash"), ""));
-	ping_job(jobid, "running", 0);
 
 	demux = 0;
 	if (err = avformat_open_input(&demux, path, 0, 0))
diff --git a/thumbnail.c b/thumbnail.c
index 720a036125658ee21cdd7751b7a0818208188c77..b1e0116a75b28b4c744359ec98ae681ddcdfcf23 100644
--- a/thumbnail.c
+++ b/thumbnail.c
@@ -37,11 +37,11 @@ int main(int argc, char *argv[])
 
 	/* Prepare arguments */
 	jobid = atoi(argv[1]);
+	ping_job(jobid, "running", 0);
 	src = buildpath(getenv(WORKER_RELEASED), jstr(jlookup(argv[4], "path"), 0));
 	tmp = mprintf("%s/.tmp-%i", getenv(WORKER_TMP), jobid);
 	dest = mprintf("%s/thumbnail/l_%s.jpg", getenv(WORKER_RELEASED),
 			jstr(jlookup(argv[4], "lectureid"), "0"));
-	ping_job(jobid, "running", 0);
 
 	/* Open src */
 	demux = 0;
diff --git a/transcode.c b/transcode.c
index b01cbe777a4519b3aa3ba0b6e0616326562c3d48..e95fc399121d4164594060c267ac72037c08ab64 100644
--- a/transcode.c
+++ b/transcode.c
@@ -269,6 +269,7 @@ int main(int argc, char *argv[])
 		return 99;
 
 	jobid = atoi(argv[1]);
+	ping_job(jobid, "running", 0);
 	input = jlookup(argv[4], "input");
 	inpath = buildpath(getenv(WORKER_RAW), jstr(jlookup(input, "path"), 0));
 	output = jlookup(argv[4], "output");
@@ -321,8 +322,8 @@ int main(int argc, char *argv[])
 	assert_empty_opts(opts);
 
 	progress = 0;
-	ping_job(jobid, "running", 0);
 
+	ping_job(jobid, "running", 0);
 	while (!av_read_frame(demux, &pkt))
 	{
 		i = pkt.stream_index;