系统任务管理
跟系统任务相关的几个命令:fg、bg、jobs、&、ctrl+z
& 最经常被用到:这个用在一个命令的最后,可以把这个命令放到后台执行
ctrl + z:可以将一个正在前台执行的命令放到后台,并且暂停
jobs:查看当前有多少在后台运行的命令
fg:将后台中的命令调至前台继续运行
oracle@yaoyuan ~$ sleep 10 ^Z [1]+ Stopped sleep 10 oracle@yaoyuan ~$ sleep 9 & [2] 25127 oracle@yaoyuan ~$ jobs [1]+ Stopped sleep 10 [2]- Running sleep 9 & oracle@yaoyuan ~$ ps PID TTY TIME CMD 24894 pts/0 00:00:00 bash 25112 pts/0 00:00:00 sleep 25167 pts/0 00:00:00 ps [2]- Done sleep 9 oracle@yaoyuan ~$ jobs [1]+ Stopped sleep 10 oracle@yaoyuan ~$ fg sleep 10
sleep 9在后台执行,不是暂停,而sleep 10暂停了。
ps
ps 命令用于显示当前系统中由该用户运行的进程列表
选项 说明
-ef 查看所有进程及其 PID(进程号)、系统时间、命令的详细目录、执行者等。
-aux 除可显示 -ef 所有内容外,还可显示 CPU 及内存占用率、进程状态。
-w 以加宽方式显示,这样可以显示较多的信息。
pidof
根据进程名查询进程号
oracle@yaoyuan ~$ pidof mysqld 1907 oracle@yaoyuan ~$ ps -ef|grep mysqld mysql 1907 1 0 Jul29 ? 00:01:57 /usr/sbin/mysqld
kill
而 kill 命令用于输出特定的信号给指定进程号(PID)的进程并根据该信号完成指定的行为,其中可能的信号有进程挂起、进程等待、进程终止等
oracle@yaoyuan ~$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX oracle@yaoyuan ~$ sleep 100 & [1] 25928 oracle@yaoyuan ~$ ps PID TTY TIME CMD 24894 pts/0 00:00:00 bash 25928 pts/0 00:00:00 sleep 25941 pts/0 00:00:00 ps oracle@yaoyuan ~$ kill 25928 oracle@yaoyuan ~$ ps PID TTY TIME CMD 24894 pts/0 00:00:00 bash 25948 pts/0 00:00:00 ps
信号默认为15,使用-9可以强制杀死。
nohup
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
以下命令在后台执行 root 目录下的 dbaace.sh 脚本:
oracle@yaoyuan ~$ cat > yaoyuan.sh ls oracle@yaoyuan ~$ chmod a+x yaoyuan.sh oracle@yaoyuan ~$ nohup yaoyuan.sh nohup: ignoring input and appending output to ‘nohup.out’ nohup: failed to run command ‘yaoyuan.sh’: No such file or directory oracle@yaoyuan ~$ nohup ./yaoyuan.sh nohup: ignoring input and appending output to ‘nohup.out’ oracle@yaoyuan ~$ cat nohup.out aa a.sql awrdiff_1_253_1_270.html ...
at
计划任务服务程序 把周期性、规律性的工作交给系统自动完成。计划任务分为一次性计划任务与长期性计划任务。一次性计划任务只执行一次,一般用于满足临时的工作需求。我们可以用at命令实现这种功能,只需要写成“at 时间”的形式就可以。
oracle@yaoyuan ~$ date Sun Jul 31 15:16:55 CST 2022 oracle@yaoyuan ~$ at 15:18 at> touch file_a at> <EOT> job 1 at Sun Jul 31 15:18:00 2022 oracle@yaoyuan ~$ date Sun Jul 31 15:18:01 CST 2022 oracle@yaoyuan ~$ ll file_a -rw-r--r--. 1 oracle oinstall 0 Jul 31 15:18 file_a
是输入Ctrl+d结束。
crontab
我们希望 Linux 系统能够周期性地、有规律地执行某些具体的任务,那么Linux 系统中默认启用的 crond 服务简直再适合不过了 创建、编辑计划任务的命令为“crontab -e”,查看当前计划任务的命令为“crontab -l”,删除某条计划任务的命令为“crontab -r”。另外,如果您是以管理员的身份登录的系统,还可以在crontab 命令中加上-u 参数来编辑他人的计划任务。
格式如下:
* * * * * command
分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令
例子:
每晚的21:30重启apache:
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
每月1、10、22日的4点45分执行:
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
每周日早上2点执行数据库备份脚本:
0 2 * * 7 backup_database.sh
常用于数据库备份
开机自动执行
# crontab -e //进入编辑,输入如下行 @reboot touch /home/oracle/hello.res
检查使用crontab -l
作者介绍:
姚远:Oracle ACE(Oracle和MySQL数据库方向 ),华为云MVP。拥有包括 Oracle 10g和12c OCM在内的20+数据库相关认证。曾任IBM公司数据库部门经理,现在一家第三方公司任首席数据库专家,服务2万+客户,《MySQL 8.0运维与优化》的作者。