guoj@iZ2ze8wsk0m120dsi7m0juZ:~$ sudo cat /etc/init.d/nginx
#!/bin/sh### BEGIN INIT INFO# Provides: nginx# Required-Start: $local_fs $remote_fs $network $syslog $named# Required-Stop: $local_fs $remote_fs $network $syslog $named# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: starts the nginx web server# Description: starts nginx using start-stop-daemon### END INIT INFOPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nginx
NAME=nginx
DESC=nginx
# Include nginx defaults if availableif[ -r /etc/default/nginx ];then . /etc/default/nginx
fiSTOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/5/KILL/5}"test -x $DAEMON||exit0. /lib/init/vars.sh
. /lib/lsb/init-functions
# Try to extract nginx pidfilePID=$(cat /etc/nginx/nginx.conf | grep -Ev '^\s*#'| awk 'BEGIN { RS="[;{}]" } { if ($1 == "pid") print $2 }'| head -n1)if[ -z "$PID"];thenPID=/run/nginx.pid
fiif[ -n "$ULIMIT"];then# Set ulimit if it is set in /etc/default/nginxulimit$ULIMITfistart_nginx(){# Start the daemon/service## Returns:# 0 if daemon has been started# 1 if daemon was already running# 2 if daemon could not be started start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON --test > /dev/null \
||return1 start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON -- \
$DAEMON_OPTS 2>/dev/null \
||return2}test_config(){# Test the nginx configuration$DAEMON -t $DAEMON_OPTS>/dev/null 2>&1}stop_nginx(){# Stops the daemon/service## Return# 0 if daemon has been stopped# 1 if daemon was already stopped# 2 if daemon could not be stopped# other if a failure occurred start-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PID --name $NAMERETVAL="$?" sleep 1return"$RETVAL"}reload_nginx(){# Function that sends a SIGHUP to the daemon/service start-stop-daemon --stop --signal HUP --quiet --pidfile $PID --name $NAMEreturn0}rotate_logs(){# Rotate log files start-stop-daemon --stop --signal USR1 --quiet --pidfile $PID --name $NAMEreturn0}upgrade_nginx(){# Online upgrade nginx executable# http://nginx.org/en/docs/control.html## Return# 0 if nginx has been successfully upgraded# 1 if nginx is not running# 2 if the pid files were not created on time# 3 if the old master could not be killedif start-stop-daemon --stop --signal USR2 --quiet --pidfile $PID --name $NAME;then# Wait for both old and new master to write their pid filewhile[ ! -s "${PID}.oldbin"]||[ ! -s "${PID}"];docnt=`expr $cnt + 1`if[$cnt -gt 10];thenreturn2fi sleep 1done# Everything is ready, gracefully stop the old masterif start-stop-daemon --stop --signal QUIT --quiet --pidfile "${PID}.oldbin" --name $NAME;thenreturn0elsereturn3fielsereturn1fi}case"$1" in
start) log_daemon_msg "Starting $DESC""$NAME" start_nginx
case"$?" in
0|1) log_end_msg 0;; 2) log_end_msg 1;;esac;; stop) log_daemon_msg "Stopping $DESC""$NAME" stop_nginx
case"$?" in
0|1) log_end_msg 0;; 2) log_end_msg 1;;esac;; restart) log_daemon_msg "Restarting $DESC""$NAME"# Check configuration before stopping nginxif ! test_config;then log_end_msg 1# Configuration errorexit$?fi stop_nginx
case"$?" in
0|1) start_nginx
case"$?" in
0) log_end_msg 0;; 1) log_end_msg 1;;# Old process is still running *) log_end_msg 1;;# Failed to startesac;; *)# Failed to stop log_end_msg 1;;esac;; reload|force-reload) log_daemon_msg "Reloading $DESC configuration""$NAME"# Check configuration before stopping nginx## This is not entirely correct since the on-disk nginx binary# may differ from the in-memory one, but that's not common.# We prefer to check the configuration and return an error# to the administrator.if ! test_config;then log_end_msg 1# Configuration errorexit$?fi reload_nginx
log_end_msg $?;; configtest|testconfig) log_daemon_msg "Testing $DESC configuration" test_config
log_end_msg $?;; status) status_of_proc -p $PID"$DAEMON""$NAME"&&exit0||exit$?;; upgrade) log_daemon_msg "Upgrading binary""$NAME" upgrade_nginx
log_end_msg $?;; rotate) log_daemon_msg "Re-opening $DESC log files""$NAME" rotate_logs
log_end_msg $?;; *)echo"Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}">&2exit3;;esac
mysql_upgrade: Got error: 1045: Access denied for user ‘debian-sys-maint’@’localhost’ (using password: YES) while connecting to the MySQL server
Do you want to continue? [Y/n] y
Setting up mysql-server-5.7 (5.7.21-0ubuntu0.16.04.1) ...
mysql_upgrade: Got error: 1045: Access denied for user 'debian-sys-maint'@'localhost' (using password: YES) while connecting to the MySQL server
Upgrade process encountered error and will not continue.
mysql_upgrade failed with exit status 11
dpkg: error processing package mysql-server-5.7 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
mysql-server depends on mysql-server-5.7; however:
Package mysql-server-5.7 is not configured yet.
dpkg: error processing package mysql-server (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
mysql-server-5.7
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@iZ2ze8wsk0m120dsi7m0juZ:/# cat /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH![client]host= localhost
user= debian-sys-maint
password= aVKpepDSPym1V0nb
socket= /var/run/mysqld/mysqld.sock
[mysql_upgrade]host= localhost
user= debian-sys-maint
password= aVKpepDSPym1V0nb
socket= /var/run/mysqld/mysqld.sock
默认情况,还用于日志的处理。参考/etc/logrotate.d/mysql-server:
root@iZ2ze8wsk0m120dsi7m0juZ:/# cat /etc/logrotate.d/mysql-server
# - I put everything in one block and added sharedscripts, so that mysql gets # flush-logs'd only once.# Else the binary logs would automatically increase by n times every day.# - The error log is obsolete, messages go to syslog now./var/log/mysql.log /var/log/mysql/*log { daily
rotate 7 missingok
create 640 mysql adm
compress
sharedscripts
postrotate
test -x /usr/bin/mysqladmin ||exit0# If this fails, check debian.conf! MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"if[ -z "`$MYADMIN ping 2>/dev/null`"];then# Really no mysqld or rather a missing debian-sys-maint user?# If this occurs and is not a error please report a bug.#if ps cax | grep -q mysqld; thenif killall -q -s0 -umysql mysqld;thenexit1fielse$MYADMIN flush-logs
fi endscript
}
* MYSQL WON'T START OR STOP?:
=============================You may never ever delete the special mysql user "debian-sys-maint". This
user together with the credentials in /etc/mysql/debian.cnf are used by the
init scripts to stop the server as they would require knowledge of the mysql
root users password else.
So in most of the times you can fix the situation by making sure that the
debian.cnf file contains the right password, e.g. by setting a new one
(remember to do a "flush privileges"then).
root@iZ2ze8wsk0m120dsi7m0juZ:/# apt-get update
.....................
root@iZ2ze8wsk0m120dsi7m0juZ:/# apt-get install nodejs
Reading package lists... Done
Building dependency tree
Reading state information... Done
nodejs is already the newest version (4.2.6~dfsg-1ubuntu4.1).
0 upgraded, 0 newly installed, 0 to remove and 109 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up mysql-server-5.7 (5.7.21-0ubuntu0.16.04.1) ...
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.gtid_executed OK
mysql.help_category OK
......................................
Upgrade process completed successfully.
Checking if update is needed.
Setting up mysql-server (5.7.21-0ubuntu0.16.04.1) ...
...................
root@iZ2ze8wsk0m120dsi7m0juZ:/# cat /etc/cron.daily/logrotate
#!/bin/sh# Clean non existent log file entries from status filecd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status |whileread logfile date
do[ -e "$logfile"]&&echo"\"$logfile\" $date"done>> status.clean
mv status.clean status
test -x /usr/sbin/logrotate ||exit0/usr/sbin/logrotate /etc/logrotate.conf