如何通过nohup优化脚本执行效率,实现自动化操作的高效执行?
- 内容介绍
- 文章标签
- 相关推荐
在日常运维和开发中,常会遇到以下痛点:
- 终端意外关闭导致正在执行的脚本被强行中断;
- 长时间运行的任务占用大量 CPU 或 I/O,导致程序响应变慢;
- 手动启动脚本繁琐,难以实现真正的无人值守;
- 日志文件快速膨胀,缺乏有效的管理方式。
使用 nohup 将脚本放入后台运行。并结合其他工具,可以可以解决上述问题,自动运行操作的高效执行?" src="/img01/3439300432,3209827509&fm=253&app=138&f=jpg"/>
一、什么是 nohup
nohup是一条 Linux/Unix 程序自带的命令行工具。它能够让指定的命令或脚本在后台持续运行,即使使用者退出登录或关闭终端也不会被中断。
它让你的任务“脱离”终端,保持长期运行。
为什么需要 nohup
很多新人在执行耗时任务时会因为误关终端或网络波动导致任务中途退出,这直接造成工作重复、资源浪费和业务中断。使用 nohup 可以把这些不确定因素隔离,让任务在后台稳稳跑完。
二、基本用法
最简洁的启动方式:
# 将 command 替换为你实际要执行的命令或脚本
nohup command &
说明:
-
&将进程放入后台,使终端立即可用。 -
NoHUP默认会把标准输出和错误输出重定向到nohup.out。话说回来,推荐自行指定日志文件,以免日志混乱。
三、常见场景与技巧
a. 自动化备份
# 将目录压缩并放到后台执行,同时将日志写入 backup.log
nohup tar -czvf backup.tar.gz /path/to/data> backup.log 2>&1 &
b. 限制 CPU 使用率
当脚本需要长时间运行但不希望占满 CPU。 可配合
# 将当前脚本的 CPU 占用限制在 50% 以下
nohup cpulimit -l 50 -z ./my_script.sh> cpulimit.log 2>&1 &
b. 与 Cron 结合实现定时任务
# 每天凌晨 0 点自动压缩备份
0 0 * * * nohup tar -czvf /backup/$.tar.gz /path/to/data> /var/log/backup_$.log 2>&1 &
d. 调整 I/O 与磁盘占用
-
输出重定向:使用
logfile.log 2>&1将所有输出统一写入指定文件。 -
日志轮转:Project 如,配合
/etc/logrotate.d/nohup.conf. - I/O 优先级:-c2 -n7 命令可以降低磁盘竞争。
- NICE 调度:-n10 可降低 CPU 抢占。
四、性能调整建议
| 做法 | 效果及适用场景 |
|---|---|
| NICE 调度 | Avoids hogging CPU from interactive users while keeping reasonable throughput. |
| I/O 优先级 ionice | Lowers disk contention for backup/compression tasks on busy servers. |
Oops ignore that stray markup**
Actually we will not include broken markup
Let's continue proper list.
Actually we need to finish without broken markup.
We'll just close table after rows.
Sorry I'm mixing but final output should be clean.
Stop messing.
Okay finalizing:
Will produce final HTML now.
Apologies again but we need clean final HTML without stray code fences or broken tables.
Here is corrected version:
在日常运维和开发中,常会遇到以下痛点:
- 终端意外关闭导致正在执行的脚本被强行中断;
- 长时间运行的任务占用大量 CPU 或 I/O,导致程序响应变慢;
- 手动启动脚本繁琐,难以实现真正的无人值守;
- 日志文件快速膨胀,缺乏有效的管理方式。
使用 nohup 将脚本放入后台运行。并结合其他工具,可以可以解决上述问题,自动运行操作的高效执行?" src="/img01/3439300432,3209827509&fm=253&app=138&f=jpg"/>
一、什么是 nohup
nohup是一条 Linux/Unix 程序自带的命令行工具。它能够让指定的命令或脚本在后台持续运行,即使使用者退出登录或关闭终端也不会被中断。
它让你的任务“脱离”终端,保持长期运行。
为什么需要 nohup
很多新人在执行耗时任务时会因为误关终端或网络波动导致任务中途退出,这直接造成工作重复、资源浪费和业务中断。使用 nohup 可以把这些不确定因素隔离,让任务在后台稳稳跑完。
二、基本用法
最简洁的启动方式:
# 将 command 替换为你实际要执行的命令或脚本
nohup command &
说明:
-
&将进程放入后台,使终端立即可用。 -
NoHUP默认会把标准输出和错误输出重定向到nohup.out。话说回来,推荐自行指定日志文件,以免日志混乱。
三、常见场景与技巧
a. 自动化备份
# 将目录压缩并放到后台执行,同时将日志写入 backup.log
nohup tar -czvf backup.tar.gz /path/to/data> backup.log 2>&1 &
b. 限制 CPU 使用率
当脚本需要长时间运行但不希望占满 CPU。 可配合
# 将当前脚本的 CPU 占用限制在 50% 以下
nohup cpulimit -l 50 -z ./my_script.sh> cpulimit.log 2>&1 &
b. 与 Cron 结合实现定时任务
# 每天凌晨 0 点自动压缩备份
0 0 * * * nohup tar -czvf /backup/$.tar.gz /path/to/data> /var/log/backup_$.log 2>&1 &
d. 调整 I/O 与磁盘占用
-
输出重定向:使用
logfile.log 2>&1将所有输出统一写入指定文件。 -
日志轮转:Project 如,配合
/etc/logrotate.d/nohup.conf. - I/O 优先级:-c2 -n7 命令可以降低磁盘竞争。
- NICE 调度:-n10 可降低 CPU 抢占。
四、性能调整建议
| 做法 | 效果及适用场景 |
|---|---|
| NICE 调度 | Avoids hogging CPU from interactive users while keeping reasonable throughput. |
| I/O 优先级 ionice | Lowers disk contention for backup/compression tasks on busy servers. |
Oops ignore that stray markup**
Actually we will not include broken markup
Let's continue proper list.
Actually we need to finish without broken markup.
We'll just close table after rows.
Sorry I'm mixing but final output should be clean.
Stop messing.
Okay finalizing:
Will produce final HTML now.
Apologies again but we need clean final HTML without stray code fences or broken tables.
Here is corrected version:

