A dotnet global tool that gracefully stops processes by sending them SIGINT (Ctrl+C) in a cross platform way.
PowerShell's Stop-Process (and the underlying TerminateProcess on Windows / SIGKILL on Unix) kills a process immediately — the target has no opportunity to clean up. This matters for apps that rely on graceful shutdown: flushing writes to disk, completing in-flight work, disposing resources, or honouring a CancellationToken in a .NET IHost/IHostedService.
dnx stop sends SIGINT instead — the same signal as pressing Ctrl+C — which lets the process shut down on its own terms. On Windows this is non-trivial to do programmatically; it requires detaching from the current console, attaching to the target process's console group, and calling GenerateConsoleCtrlEvent. This tool handles all of that transparently, cross-platform.
dnx stop [<processId>] [--timeout <milliseconds>] [--quiet]Usage: [arguments...] [options...] [-h|--help] [--version]
Sends the SIGINT (Ctrl+C) signal to a process to gracefully stop it.
Arguments:
[0] <int?> ID of the process to stop. When omitted, reads process IDs from standard input.
Options:
-t, --timeout <int?> Optional timeout in milliseconds to wait for the process to exit.
-q, --quiet Do not display any output.If no timeout is provided, the tool will wait indefinitely for the target process to exit. Otherwise, the process will exit with a non-zero exit code if the target process didn't exit within the specified timeout time.
When no process ID is given, dnx stop reads process IDs from standard input. This allows
piping directly from PowerShell's Get-Process:
# Stop all processes named 'foo'
Get-Process -Name foo | dnx stop
# Stop multiple processes by name
Get-Process -Name foo, bar | dnx stopYou can also pipe just the IDs:
Get-Process -Name foo | Select-Object -ExpandProperty Id | dnx stop