We've all been there - you run a simple ping example.com
in your terminal to check connectivity, then get distracted while it spams hundreds of responses. The default behavior keeps sending ICMP packets until manually stopped.
$ ping google.com
PING google.com (142.250.190.46) 56(84) bytes of data.
64 bytes from fra16s48-in-f14.1e100.net (142.250.190.46): icmp_seq=1 ttl=118 time=12.3 ms
64 bytes from fra16s48-in-f14.1e100.net (142.250.190.46): icmp_seq=2 ttl=118 time=11.9 ms
...hundreds more lines...
The universal way to stop any running terminal command is Ctrl+C. This sends SIGINT signal:
$ ping example.com
PING example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=1 ttl=53 time=24.6 ms
^C
--- example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
Better practice is to specify packet count using -c flag:
$ ping -c 5 google.com
PING google.com (142.250.190.46) 56(84) bytes of data.
64 bytes from fra16s48-in-f14.1e100.net (142.250.190.46): icmp_seq=1 ttl=118 time=12.3 ms
...
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
Several other useful flags:
-w 10
: Stop after 10 seconds-i 0.5
: Set interval to 0.5 seconds-q
: Quiet output (summary only)
$ ping -c 3 -i 2 -q google.com
PING google.com (142.250.190.46) 56(84) bytes of data.
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 11.923/12.089/12.356/0.183 ms
For unresponsive pings:
- Try Ctrl+\ (SIGQUIT) for force quit
- Use
killall ping
in another terminal - Check for zombie processes with
ps aux | grep ping
When you run ping hostname
in Linux (Debian/Ubuntu systems included), it typically continues sending ICMP packets indefinitely until manually stopped. This explains the output you observed with ICMP sequence numbers reaching 500+:
64 bytes from example.com (192.0.2.1): icmp_seq=526 ttl=64 time=0.026 ms
64 bytes from example.com (192.0.2.1): icmp_seq=527 ttl=64 time=0.025 ms
64 bytes from example.com (192.0.2.1): icmp_seq=528 ttl=64 time=0.034 ms
Instead of closing the terminal (which works but isn't elegant), here are better methods:
1. Using -c Flag (Count)
The most professional approach is to specify packet count upfront:
ping -c 5 example.com # Will stop after 5 packets
2. Stopping an Active Ping Process
For already running ping commands:
Ctrl+C # Standard keyboard interrupt
3. Time-Limited Pings
If you need tests with duration control:
ping -w 30 example.com # Stops after 30 seconds
ping -W 10 example.com # Waits 10 seconds per packet
Combining Count and Interval
ping -c 10 -i 2 example.com # 10 packets with 2-second intervals
Quiet Mode for Scripting
ping -c 1 -q example.com > /dev/null
echo $? # Returns 0 if host reachable, 1 if not
Using timeout Command
For systems where ping lacks time controls:
timeout 5s ping example.com
Uncontrolled pings can:
- Flood logs with unnecessary data
- Create false alarms in monitoring systems
- Waste network resources during troubleshooting