一、nohup是什么
nohup是Linux系统中自带的命令,能够将一个指定的命令或脚本执行在后台,并不受终端的关闭影响。即使终端关闭或断开网络连接,进程仍然在后台运行。
基本语法:nohup Command &
nohup command & //使用实例: nohup ./test.sh &
二、使用场景
在日常生产中,我们经常需要执行一些比较耗时的操作,比如大量文件的拷贝、大数据量的备份等。由于这些操作比较耗费时间,如果不使用nohup命令,就需要等待终端命令的执行结果;而使用nohup命令后,进程将后台运行,不影响我们的其他操作,也不会因为终端关闭而停止。
三、实例演示
以备份数据库为例演示nohup的使用。
1、先创建一个用于备份的脚本:
#!/bin/bash database=demo backup_path=/opt/backup/mysqldump time=`date +%Y%m%d_%H%M%S` suffix=".sql" dumpfilename=$backup_path/$database-$time$suffix /usr/bin/mysqldump -u root $database > $dumpfilename
2、执行备份脚本:
sh mysql_backup.sh dumpfile saved at /opt/backup/mysqldump/demo-20211211_132803.sql
3、修改脚本使用nohup命令后台执行:
nohup sh mysql_backup.sh & //执行后返回类似以下信息: [1] 6599 nohup: ignoring input and appending output to 'nohup.out'
4、将nohup命令输出到指定文件:
nohup sh mysql_backup.sh > /opt/backup/log/mysql_backup.log 2>&1 &
四、注意事项
1、当耗时较长的进程运行时,使用nohup命令后,在原始目录下会出现一个nohup.out文件。这个文件是nohup自动生成的,用来存储输出到终端的信息。如果你不想输出到该文件中,可以使用“>”符号将输出重定向到其他文件中。
2、nohup命令一般用于长时间运行的任务,如备份、上传、下载等命令。在运行耗时较短的命令时,反而容易出现问题(如满足不了预期),而且这些问题比较难以排查。
3、nohup命令无法用于交互式进程,如SSH会话等。
五、总结
nohup命令是一个实用的Unix/Linux命令,可以在终端关闭后使进程继续后台运行,解决了很多日常操作需求的问题。在使用nohup命令时,需要注意以上注意事项,可以更好的发挥nohup的作用。