Software & AppsOperating SystemLinux

How To Kill a Running Job When Ctrl-C Fails in Bash

Ubuntu 17

In the world of Bash, or the Bourne Again SHell, we often encounter long-running processes that need to be terminated. The most common way to do this is by using the Ctrl+C command. However, there are instances where this command fails to kill the running job. In this article, we will explore alternative methods to terminate such processes.

Quick Answer

If Ctrl+C fails to kill a running job in Bash, you can try using Ctrl+\ to send a SIGQUIT signal, use Ctrl+Z to pause the process and then use the kill command to terminate it, or use the Alt+SysRq+k shortcut to kill every process on the current virtual console. Additionally, some processes have specific commands to exit, such as q for man and :q for vi. If none of these methods work, it may be worth checking your terminal preferences for any remapped keyboard shortcuts.

Understanding the Ctrl+C Command

Before we dive into the alternatives, let’s understand what happens when we use the Ctrl+C command. This command sends a SIGINT (Signal Interrupt) signal to the process, which instructs it to terminate. However, some processes can choose to ignore this signal, which is why Ctrl+C sometimes fails to kill the job.

Using Ctrl+\ to Send the SIGQUIT Signal

If Ctrl+C fails, the first alternative to try is Ctrl+\. This command sends a SIGQUIT signal to the process, which not only instructs it to terminate but also to create a core dump. A core dump is a file that captures the memory image of the process, which can be useful for debugging.

Ctrl + \

Using Ctrl+Z and the Kill Command

Another alternative is to use the Ctrl+Z command, which sends a SIGTSTP (Signal Stop) signal to the process. This pauses the process but does not terminate it. Once the process is paused, you can use the kill command to terminate it.

First, pause the process:

Ctrl + Z

Then, use the kill command to terminate it. The -9 option sends a SIGKILL signal, which cannot be ignored by the process.

kill -9 %1

In this command, %1 refers to the job number. You can use the jobs command to list the current jobs and identify the job number.

Using the Alt+SysRq+k Shortcut

The Alt+SysRq+k shortcut, also known as the “Magic SysRq key”, can be used to kill every process on the current virtual console. This is a more drastic measure and should only be used as a last resort.

Alt + SysRq + k

Exiting Specific Processes

Some processes, such as man and vi, have specific commands to exit.

For man, use the q command:


For vi, use the :q command:


Checking Terminal Preferences

If Ctrl+C is not working as expected, it may be worth checking the keyboard shortcuts in your terminal preferences. It’s possible that the Ctrl+C functionality has been remapped to a different command.


In this article, we’ve explored several methods to kill a running job in Bash when Ctrl+C fails. These include using Ctrl+\ to send a SIGQUIT signal, using Ctrl+Z and the kill command to pause and then terminate the process, and using the Alt+SysRq+k shortcut to kill every process on the current virtual console. We’ve also discussed how to exit specific processes and how to check your terminal preferences. We hope this guide proves helpful in managing your Bash processes.

What is a long-running process?

A long-running process refers to a program or task that takes a significant amount of time to complete, often running in the background without requiring user input or interaction.

Why would a process ignore the `Ctrl`+`C` signal?

Some processes may choose to ignore the Ctrl+C signal for various reasons. For example, a process may have been designed to handle interruptions gracefully or may have a specific mechanism to handle termination.

Leave a Comment

Your email address will not be published. Required fields are marked *