Automatyczne usuwanie zdublowanych zadań na serwerze

Czy istnieje jakiś sposób żeby automatycznie zabijać procesy które użytkownik próbuje zdublowac na serwerze?

Na serwerze mam pewny program który tworzy połączenie z serwerem programu. Czasami się zdarzy że użytkownik próbuje uruchomić ten program wtedy wszystko przestaje działać.
Jak uniemożliwić podwójne włączenie zadania?

Serwer oparty o Linux, czy Windows?

Windows

Hmmm, pod Linux by wystarczył alias w bashrc sprawdzający ilość wystąpień.
Pod Windows o ile nie użyjesz jakiegoś launchera to można to zrobić jedynie skryptowo.
Przykładowo w PowerShellu:

$process = "nazwa_procesu"
$ret = Get-Process -Name $process -ErrorAction SilentlyContinue
if ($ret) {
      Write-Host "INFO: $process already running"
} else {
      Write-Host "VERBOSE: Starting $process now"
      Invoke-Item "$process.exe" 

Za pomocą pliku bat:

tasklist /FI "IMAGENAME eq nazwa_procesu.exe" 2>NUL | find /I /N "nazwa_procesu.exe">NUL if "%ERRORLEVEL%"=="1" start nazwa_procesu.exe

Można też użyć w sprytny sposób Autohotkey do tego celu:

[https://autohotkey.com/board/topic/46887-run-program-only-if-not-already-running/]
[https://autohotkey.com/board/topic/115942-preventing-more-than-one-instance-of-an-exe/]

Jak wiadomo program pozwala zrobić skrypt w postaci pliku EXE, który może być pośrednikiem w uruchamianiu właściwego programu sprawdzając, czy został on już uruchomiony.

Najprościej, to zgłosić producentowi, aby uniemożliwił uruchomienie programu, gdy jeden proces już działa. Praktycznie większość aplikacji ma taki mechanizm. Pierwszy lepszy przykład - Firefox, Thunderbird.

Szkoda czasu na rzeźbienie we własnym zakresie, to lubi się potem mścić. Skryptowanie zastosowałbym jako rozwiązanie tymczasowe. Jak kolega podał wyżej, skrypt uruchamiałby program, sprawdzając najpierw czy proces istnieje.