--- a/scripts/seaf-gc.sh
+++ b/scripts/seaf-gc.sh
@@ -63,8 +63,8 @@ function validate_already_running () {
         exit 1;
     fi
 
-    check_component_running "ccnet-server" "ccnet-server -c ${default_ccnet_conf_dir}"
-    check_component_running "seaf-server" "seaf-server -c ${default_ccnet_conf_dir}"
+    check_component_running "ccnet-server" "ccnet-server -F ${default_conf_dir} -c ${default_ccnet_conf_dir}"
+    check_component_running "seaf-server" "seaf-server -F ${default_conf_dir} -c ${default_ccnet_conf_dir}"
     check_component_running "fileserver" "fileserver -c ${default_ccnet_conf_dir}"
     check_component_running "seafdav" "wsgidav.server.server_cli"
 }
--- a/scripts/seafile.sh
+++ b/scripts/seafile.sh
@@ -107,8 +107,8 @@ function validate_already_running () {
         exit 1;
     fi
 
-    check_component_running "ccnet-server" "ccnet-server -c ${default_ccnet_conf_dir}"
-    check_component_running "seaf-server" "seaf-server -c ${default_ccnet_conf_dir}"
+    check_component_running "ccnet-server" "ccnet-server -F ${central_config_dir} -c ${default_ccnet_conf_dir}"
+    check_component_running "seaf-server" "seaf-server -F ${central_config_dir} -c ${default_ccnet_conf_dir}"
     check_component_running "fileserver" "fileserver -c ${default_ccnet_conf_dir}"
     check_component_running "seafdav" "wsgidav.server.server_cli"
 }
@@ -149,8 +149,8 @@ function stop_seafile_server () {
 
     echo "Stopping seafile server ..."
     pkill -SIGTERM -f "seafile-controller -c ${default_ccnet_conf_dir}"
-    pkill -f "ccnet-server -c ${default_ccnet_conf_dir}"
-    pkill -f "seaf-server -c ${default_ccnet_conf_dir}"
+    pkill -f "ccnet-server -F ${central_config_dir} -c ${default_ccnet_conf_dir}"
+    pkill -f "seaf-server -F ${central_config_dir} -c ${default_ccnet_conf_dir}"
     pkill -f "fileserver -c ${default_ccnet_conf_dir}"
     pkill -f "soffice.*--invisible --nocrashreport"
     pkill -f  "wsgidav.server.server_cli"
--- a/scripts/seahub.sh
+++ b/scripts/seahub.sh
@@ -94,10 +94,10 @@ function validate_seafile_data_dir () {
 }
 
 function validate_seahub_running () {
-    if pgrep -f "${manage_py}" 2>/dev/null 1>&2; then
+    if pgrep -f "${manage_py} runfcgi" 2>/dev/null 1>&2; then
         echo "Seahub is already running."
         exit 1;
-    elif pgrep -f "seahub.wsgi:application" 2>/dev/null 1>&2; then
+    elif pgrep -f "$gunicorn_exe seahub.wsgi:application -c ${gunicorn_conf}" 2>/dev/null 1>&2; then
         echo "Seahub is already running."
         exit 1;
     fi
@@ -165,7 +165,7 @@ function start_seahub () {
 
     # Ensure seahub is started successfully
     sleep 5
-    if ! pgrep -f "seahub.wsgi:application" 2>/dev/null 1>&2; then
+    if ! pgrep -f "$gunicorn_exe seahub.wsgi:application -c ${gunicorn_conf}" 2>/dev/null 1>&2; then
         printf "\033[33mError:Seahub failed to start.\033[m\n"
         echo "Please try to run \"./seahub.sh start\" again"
         exit 1;
@@ -235,9 +235,9 @@ function clear_sessions () {
 function stop_seahub () {
     if [[ -f ${pidfile} ]]; then
         echo "Stopping seahub ..."
-        pkill -9 -f "/usr/bin/gunicorn3"
+        pkill -9 -f "$gunicorn_exe seahub.wsgi:application -c ${gunicorn_conf}"
         sleep 1
-        if pgrep -f "/usr/bin/gunicorn3" 2>/dev/null 1>&2 ; then
+        if pgrep -f "$gunicorn_exe seahub.wsgi:application -c ${gunicorn_conf}" 2>/dev/null 1>&2 ; then
             echo 'Failed to stop seahub.'
             exit 1
         fi