Delay when CTRL + C -ing a Sudo command.
Oglo12 opened this issue · 3 comments
I am using sudo
to run my package manager, but everytime I misstype a package name, I try to CTRL + C Sudo, and it takes around 7 seconds or so!
Does this happen for all sudo commands or only certain ones? Can you give an exact example of a command that doesn't get interrupted properly?
Good package managers are written to handle signals. The CTRLC sends the SIGINT (number 2) signals. There are different signals - for context please read the man 7 signal
or https://man.docs.euro-linux.com/EL%209/man-pages/signal.7.en.html
The signals that are supposed to "kill" or "stop" (called TERM type signals) process might be handled by a program (each program can define a set of signal handlers) except for some signals like SIGKILL (some signals are handled by the kernel).
So basically when you send the signal to the package manager like yum
it does not stop at once as it has to ensure for example the following:
- package database is not corrupted
- any operations that are in progress do not damage the system
- the packages that are on the filesystem are in a proper state
- the locks are freed
And much much more. It's not trivial.
I also conducted simple tests:
#!/usr/bin/env bash
sudo yum clean all
sudo yum update -y &
YUM_UPDATE_PID=$(sudo pgrep yum)
echo "yum update pid: $YUM_UPDATE_PID"
sleep 1;
sudo kill -2 $YUM_UPDATE_PID
wait
second test - without any sudo must be run as root.
#!/usr/bin/env bash
yum clean all
yum update -y &
YUM_UPDATE_PID=$(pgrep yum)
echo "yum update pid: $YUM_UPDATE_PID"
sleep 1;
kill -2 $YUM_UPDATE_PID
wait
Both tests are run with time bash x.sh
Result with sudo:
[Alex@NormandySR2 ~]$ time bash x.sh
0 files removed
yum update pid: 33213
Docker CE Stable - x86_64 0.0 B/s | 0 B 00:05
Error: Failed to download metadata for repo 'docker-ce-stable': Librepo was interrupted by a signal
real 0m5.648s
user 0m0.531s
sys 0m0.174s
Result without sudo:
[root@NormandySR2 ~]# time bash x.sh
0 files removed
yum update pid: 33233
Docker CE Stable - x86_64 0.0 B/s | 0 B 00:05
Error: Failed to download metadata for repo 'docker-ce-stable': Librepo was interrupted by a signal
real 0m5.605s
user 0m0.507s
sys 0m0.106s
So the difference for single tests is 0.043
s 😄 that is less than 1% and scripts are slightly different.
If you could give an example of a program that is "stopped/killed" slowly after running with sudo versus running as root without sudo I will be happy to investigate.
Best,
Alex
@AlexBaranowski Thanks for testing. I'm closing this as it doesn't appear to be an issue with sudo.