diff options
author | unknown <tim@black.box> | 2001-10-22 11:22:55 -0400 |
---|---|---|
committer | unknown <tim@black.box> | 2001-10-22 11:22:55 -0400 |
commit | 47d42a13f6f62548370e4188227a3f156faada31 (patch) | |
tree | 7b7a6f77e5224a9c4c182ab8930aae7de7fc3994 /scripts | |
parent | 8a015dc327bba65df40352501206e80e019e45ea (diff) | |
download | mariadb-git-47d42a13f6f62548370e4188227a3f156faada31.tar.gz |
Fix the NOHUP_NICENESS test in mysqld_safe.
scripts/mysqld_safe.sh:
Fix the NOHUP_NICENESS test; previously it would break if the
process already had a negative priority.
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/mysqld_safe.sh | 49 |
1 files changed, 41 insertions, 8 deletions
diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index c6df7400c75..5504d929ede 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -159,15 +159,48 @@ export MYSQL_TCP_PORT NOHUP_NICENESS="nohup" -if test -w / + +# Using nice with no args to get the niceness level is GNU-specific. +# This check could be extended for other operating systems (e.g., +# BSD could use "nohup sh -c 'ps -o nice -p $$' | tail -1"). +# But, it also seems that GNU nohup is the only one which messes +# with the priority, so this is okay. +if nohup nice > /dev/null 2>&1 then - NOHUP_NICENESS=`nohup nice 2>&1` - if test $? -eq 0 && test x"$NOHUP_NICENESS" != x0 && nice --1 echo foo > /dev/null 2>&1 - then - NOHUP_NICENESS="nice --$NOHUP_NICENESS nohup" - else - NOHUP_NICENESS="nohup" - fi + normal_niceness=`nice` + nohup_niceness=`nohup nice` + + numeric_nice_values=1 + for val in $normal_niceness $nohup_niceness + do + case "$val" in + -[0-9] | -[0-9][0-9] | -[0-9][0-9][0-9] | \ + [0-9] | [0-9][0-9] | [0-9][0-9][0-9] ) + ;; + * ) + numeric_nice_values=0 ;; + esac + done + + if test $numeric_nice_values -eq 1 + then + nice_value_diff=`expr $nohup_niceness - $normal_niceness` + if test $? -eq 0 && test $nice_value_diff -gt 0 && \ + nice --$nice_value_diff echo testing > /dev/null 2>&1 + then + # nohup increases the priority (bad), and we are permitted + # to lower the priority + NOHUP_NICENESS="nice --$nice_value_diff nohup" + fi + fi +else + if nohup echo testing > /dev/null 2>&1 + then + : + else + # nohup doesn't work on this system + NOHUP_NICENESS="" + fi fi USER_OPTION="" |