start-stop-daemon --start --pidfile "$pid" não grava no arquivo pid, a menos que --make-pidfile ( -m ) seja especificado. Sem --make-pidfile , cabe ao programa ser lançado para criá-lo. Também para --make-pidfile funcionar, o processo que está sendo iniciado não pode se daemonizar sozinho (por meio de uma bifurcação), pois, em seguida, start-stop-daemon não saberá qual PID deve colocar no arquivo.
A única coisa que o --pidfile "$pid" faz no seu cenário de uso é que isso resultará em start-stop-daemon não iniciar o programa se ele já estiver em execução.
Se o processo ainda não estiver sendo interrompido, todos os critérios passados para start-stop-daemon --stop deverão corresponder. O significado $pid deve ser um processo em execução, o UID do processo deve corresponder a $user e o nome do processo (arg0) deve corresponder a $name .
Você pode determinar o valor de arg0 fazendo ps h -p $pid -o comm