Submit Hint Search The Forums LinksStatsPollsHeadlinesRSS
14,000 hints and counting!

Killing a root process UNIX
How can one kill a root-owned process? I installed mysql and have it loading itself automatically on login. However, I need to kill it to reconfigure it and I realized I can't do so. In process viewer it shows that it's running, and that it's owned by root, but it won't let me kill it because I'm not root. If I use terminal and use the su command to become root, it doesn't show the mysqld process, only ps and tsch.

Any ideas how to either kill the process from within OS X or how to switch to the root user in terminal such that I can see the processes?

Thanks. Philip
  • Currently 3.33 / 5
  You rated: 4 / 5 (3 votes cast)

Killing a root process | 13 comments | Create New Account
Click here to return to the 'Killing a root process' hint
The following comments are owned by whoever posted them. This site is not responsible for what they say.
ps -ax
Authored by: Anonymous on Apr 20, '01 12:26:31AM
after you su to root in the terminal, type 'ps -ax' and you should see all processes, find the one you want to kill, and 'kill -9 #INSERT PROCESS ID HERE#'

i forget what the -9 is for, but it's good in case something doesn't want to be killed, so -9 is kind of like a kill with extreme prejudice. You can always read the man pages...

[ Reply to This | # ]

ps -ax
Authored by: Anonymous on Apr 20, '01 10:26:52AM

The -9 flag will terminate the process immediately without giving the process a chance to exit cleanly. Using -HUP (hangup) is "nicer" in that the program may be able to shut itself down, but OTOH -HUP doesn't always work and you have to resort to -9 anyway.

For more information open your terminal and type "man kill".

[ Reply to This | # ]
Oh yeah, one more thing...
Authored by: Anonymous on Apr 20, '01 10:29:26AM

The usual way to restart a daemon to reconfigure it is to use kill -HUP. Dunno if it works for mysql but I've done this many times for inetd on solaris 2.6.

[ Reply to This | # ]
ps -ax
Authored by: robh on Apr 20, '01 11:08:41AM

Your description of -HUP sounds more like the definition of -TERM (-15).

Kill -HUP is sometimes used to tell a process to restart/refresh. Often it does absolutelty nothing. The author of the program decides what to do in response to a -HUP.

Kill -TERM tells a process to shutdown (TERMinate) and gives the process the opportunity to do so cleanly.

kill -KILL (aka kill -9) is a shutdown that doesn't allow the process to shutdown cleanly.

If you type "kill -l" (that's an 'L' not the number one) you'll get a list of signals. Count them off to find the numeric equivalent.

kill -l

[ Reply to This | # ]
Authored by: babbage on Apr 20, '01 02:51:11PM
Having access to the root account is a sharp & powerful double-edged sword.
It's not by accident that Apple locked it out by default, and that decision
shouldn't be crossed lightly.

In most cases, `sudo` is a far safer tactic. It allows you to run a command
as another user (such as of course the root account), and you're not left in
that other users account where it is all too easy to make a mess of things.

Better by far here would be to find & kill the process in question this way:

% ps ax | grep mysql
[any processes show up, including possibly the grep]
% sudo kill [mysql process number]
Password: [enter admin password]
% ps ax | grep mysql

That last line is a test to make sure it worked. If it didn't, try
`kill`ing again with numbers increasing from 5 to 9 (shifting from safer
"let it die gracefully" commands to riskier "alright just shut down NOW"

% ps ax | grep mysql
% sudo kill -5 [mysql process number]
[note that you won't be asked for the password again,
if you're within 5 minutes of first trying `sudo`.]

% ps ax | grep mysql
% sudo kill -6 [mysql process number]
% ps ax | grep mysql
% sudo kill -7 [mysql process number]
% ps ax | grep mysql
% sudo kill -8 [mysql process number]
% ps ax | grep mysql
% sudo kill -9 [mysql process number]
% ps ax | grep mysql

It should work by the time you get to -9, but hopefully sooner.

Of course, as another poster noted, this isn't the right way to do it
anyhow. The mysql distribution should have included a shutdown script. If
I knew mysql better I'd quote the command & syntax myself, but the other
poster already said it and, moreover, your mysql documentation should
surely have mentioned how to start & stop the server properly.

Read The Funny Manual!

[ Reply to This | # ]

DON'T NEED ROOT! + bad advice
Authored by: robh on Apr 20, '01 06:20:19PM
Part of the previous post is BAD advice. Doing a kill -5, -6, -7, -8, before resorting to -9 is nonsense. To kill off a process, try -15 then -9. Each numeric argument corresponds to a different signal. The 'kill' command is a misnomer since it's a tool to send signals to processes, and only one of the signals happens to be '-9', the kill signal. For example, kill -8 is equivalent of telling the process it has experienced a floating-point exception and you want a core dump created (a huge debugging file, useless in this context). Here's a list of signals, their numbers, names and descriptions. The info came from 'man sigaction', I added the numbers for clarity.
    NAME            Default Action          Description
1   SIGHUP          terminate process       terminal line hangup
2   SIGINT          terminate process       interrupt program
3   SIGQUIT         create core image       quit program
4   SIGILL          create core image       illegal instruction
5   SIGTRAP         create core image       trace trap
6   SIGABRT         create core image       abort(2) call (formerly SIGIOT)
7   SIGEMT          create core image       emulate instruction executed
8   SIGFPE          create core image       floating-point exception
9   SIGKILL         terminate process       kill program
10  SIGBUS          create core image       bus error
11  SIGSEGV         create core image       segmentation violation
12  SIGSYS          create core image       system call given invalid argument
13  SIGPIPE         terminate process       write on a pipe with no reader
14  SIGALRM         terminate process       real-time timer expired
15  SIGTERM         terminate process       software termination signal
16  SIGURG          discard signal          urgent condition present on socket
17  SIGSTOP         stop process            stop (cannot be caught or ignored)
18  SIGTSTP         stop process            stop signal generated from keyboard
19  SIGCONT         discard signal          continue after stop
20  SIGCHLD         discard signal          child status has changed
21  SIGTTIN         stop process            background read attempted from control terminal
22  SIGTTOU         stop process            background write attempted to control terminal
23  SIGIO           discard signal          I/O is possible on a descriptor (see fcntl(2))
24  SIGXCPU         terminate process       cpu time limit exceeded (see qsetrlimit(2))
25  SIGXFSZ         terminate process       file size limit exceeded (see setrlimit(2))
26  SIGVTALRM       terminate process       virtual time alarm (see setitimer(2))
27  SIGPROF         terminate process       profiling timer alarm (see setitimer(2))
28  SIGWINCH        discard signal          Window size change
29  SIGINFO         discard signal          status request from keyboard
30  SIGUSR1         terminate process       User defined signal 1
32  SIGUSR2         terminate process       User defined signal 2

[ Reply to This | # ]
DON'T NEED ROOT! + bad advice
Authored by: babbage on Apr 20, '01 07:05:47PM

I stand corrected. Very interesting.

[ Reply to This | # ]

ps aux
Authored by: Anonymous on Apr 20, '01 12:27:33AM


To see all the processes type 'ps aux'. Personally I created/edited the .cshrc file in my home directory to include a line with the following

alias ps 'ps aux'

and once you launch a new terminal window ps will now give you all the details to identify pid's on running processes.


[ Reply to This | # ]
Surely it's a bad idea...
Authored by: dseang on Apr 20, '01 03:26:53AM

Surely it's a bad idea to shutdown any kind of database server this way (anybody who's had to force-quit FileMaker will know what i mean...),

Has anybody tried:

cd /usr/local/mysql/bin
./mysqladmin shutdown

[ Reply to This | # ]
mysql_admin shutdown is broken
Authored by: thinkyhead on Apr 20, '01 03:08:06PM
As many users have discovered you can't get the mysql daemon to quit using mysqladmin shutdown. This is a bug that exists for all BSD Unices, and not just MacOS X. Some have suggested it is because the signals that are generated by mysqladmin shutdown are blocked in some way. There are a whole bunch of threads about it all over the net, as a search on Google for terms like "mysql admin shutdown kill can't" will attest.

If anyone finds some solution I'd love to hear about it. For now it looks as if the only SAFE way to shut it down is to turn off the automatic startup of mysql and restart the computer.

[ Reply to This | # ]
Authored by: morgo on Apr 20, '01 07:39:05AM
You can sudo kill it if you don't have your root account enabled.

sudo kill process id

[ Reply to This | # ]
Mysql is a immortal :(
Authored by: eronald on Apr 20, '01 08:19:24PM

Mysql on OS X is ugly. Theoretically you should be able to shut it down cleanly with the
shutdown command from within mysqladmin, but that doesn't sem to work.
I have seen it written that the only clean way to deal with the problem is to
keep the shell which launched the safe daemon, interrupt it with CTL-Z, do
a ps and kill the spawned daemon brood, then kill the broodmaster.

Please correct me if i am wrong. I am waiting for a package which one can have
real confidence in. I have installed mysql on linux, linux ppc and OS X from original
sources. It integrates nicely into the redhat linux daemon start/stop runlevel scheme,
but i don't know how this issue is handled by Mac OS X.

[ Reply to This | # ]
Warning shot first !
Authored by: eronald on Apr 20, '01 08:25:58PM

Sending a server process a normal kill signal first is a good idea, lets it know that
it should exit gracefully and gives it a chance to behave like a gentleman :)

By the way, mysql is a very bad citizen, see my post below.


[ Reply to This | # ]