Linux 是一种自由和开放源代码的操作系统,拥有较高的安全性、可靠性和灵活性。在使用 Linux 过程中,我们可能会遇到突然断电、程序异常退出等问题导致未完成的作业丢失,这给工作和学习带来了不便。为此,本文将介绍如何在 Linux 系统中恢复未完成的作业。
创新互联主营揭西网站建设的网络公司,主营网站建设方案,app软件开发公司,揭西h5小程序制作搭建,揭西网站营销推广欢迎揭西等地区企业咨询
1. 使用 GNU Screen
GNU Screen 是一款终端会话管理器,用于保存会话或会话组。它类似于窗口彬、tmux 等工具,但在功能上更为强大。当突然停电或程序崩溃导致作业中断时,可以使用 GNU Screen 将完成的作业储存在后台,并在之后的操作中恢复。
可以通过以下命令创建一个新的 Screen 会话:
“`
$ screen
“`
该命令将会打开一个新的终端会话,并进入 Screen 内部环境。在这个环境中,你可以在后台进程中执行任务,同时终端关闭后,任务还会在后台继续运行。
如果要将已经启动的程序移到 GNU Screen 后台继续运行,可以在程序运行时按下 Ctrl+A,然后按下 D 键即可分离当前的 Screen 会话。分离后,后台程序会在 GNU Screen 中继续运行。
接下来,我们只需要使用以下命令重新连接到之前的会话,即可恢复未完成的程序:
“`
$ screen -r
“`
该命令将重新连接到 GNU Screen 会话,并恢复未完成的作业。在此过程中,所有已经配置的变量和环境设置都将被保留。
2. 使用 nohup 命令
Nohup(No Hang Up)是一个Linux命令,在终端中使用nohup命令可以在后台启动作业,并且把作业从当前 Shell 的环境中脱离,这样当用户注销之后,作业仍然在后台运行。它与GNU Screen类似,但更适用于临时作业和简单任务。
使用 nohup 命令可以将某个命令或脚本放置到后台进程中,并确保在程序异常退出或系统重启后,作业仍可以继续运行。
以下是一个示例,假设你需要执行 /path/to/your/script.sh 脚本:
“`
$ nohup /path/to/your/script.sh &
“`
该命令将脚本放置到后台,并使用 nohup 命令防止脚本的运行被打断。
如果已经在后台运行某个作业,可以在需要恢复时使用以下命令重新连接到该作业:
“`
$ nohup &
“`
可以看到,nohup 命令使用简便,适用于简单的任务。但对于长时间运行、需要更新输出和接收输入的作业来说,还是 GNU Screen 更为合适。
3. 使用 Foreground 命令
Foreground 命令可以将已经在后台运行的任务恢复到前台。使用该命令的前提是,作业必须在后台运行。
可以通过以下命令在终端中查找已经在后台运行的任务:
“`
$ jobs
“`
找到需要恢复的作业后,可以使用 fg 命令将其恢复到前台:
“`
$ fg %n
“`
其中,n 表示你要恢复的作业的标识符。可以通过 jobs 命令查看标识符。该命令执行后,原本在后台运行的任务就会转移到前台并重新运行。
相关问题拓展阅读:
命令运行时使用CTRL+Z,强制当前进程转为后台,并使之挂起(暂停).
1. 使进程恢复运行(后台)
(1)使用命令bg
Example:
zuii@zuii-desktop:~/unp/tcpcliserv$ ./tcpserv01
*这里使用CTRL+Z,此时serv01是橡旦停止状态*
+ Stopped ./tcpserv01
zuii@zuii-desktop:~/unp/tcpcliserv$ bg
+ ./tcpserv01 & *此时serv01运行在后台*
zuii@zuii-desktop:~/unp/tcpcliserv$
(2)如果用CTRL+Z停止了几个程序呢?
Example:
zuii@zuii-desktop:~/unp/tcpcliserv$ jobs
- Running ./tcpserv01 &
+ Stopped ./tcpcli01 127.0.0.1
zuii@zuii-desktop:~/unp/tcpcliserv$ bg %1
bash: bg:任务 1 已转入后台 *后橡如告台运行*
2. 使进梁明程恢复至前台运行
Example:
zuii@zuii-desktop:~/unp/tcpcliserv$ ./tcpserv04
+ Stopped ./tcpserv04
zuii@zuii-desktop:~/unp/tcpcliserv$ fg
./tcpserv04
总结:
(1) CTRL+Z挂起进程并放入后台
(2) jobs 显示当前暂停的进程
(3) bg %N 使第N个任务在后台运行(%前有空格)
(4) fg %N 使第N个任务在前台运行
默认bg,fg不带%N时表示对最后一个进程操作!
注意:千万不要exit或Ctrl+d,断开服务器连接腔手后,纤圆磨就无法再次使用fg命毁斗令把后台运行转为前台运行了,因为输入jobs命令就不会显示后台运行的任务了,但这个进程还活着。
jobs 查看当前后台任务 可以获得任腔碧务的索引
bg %x 后台伍启举运行索引为x的任务
fg %x 前台旁升运行索引为x的任务
对于使用Linux的人来说,迟早都可能在某一阶段遇到这个问题:你正在兴高采烈得探索你的系统,调整,优化以挖掘其更大的潜力,突然,omg,你发现,系统不能启动了!如果你之前已经习惯了使用Windows系统,我打赌,这是一个经常性的问题,而你最初闪出的念头就是格式化并重装系统。而对于Linux而言,重装系统绝对是最后的选择,只有在我们其它努力都作废之后,才需要考虑这一点。我个人认为,唯一能让人不得不重装系统的情况就是,不幸的你以root身份敲下了森雹不幸的命令rm -rf /。恩,千万别模仿!虽然你可以通过“ctrl c”来终止这该死的自杀操作。 对于Linux,一旦出现无法启动系统情况的时候,也许你知道错误大概出在哪里,有比较明确的修复方向,比如调整屏幕分辨率,或者修改某个脚本,等等。但是,现在问题的关键,是需要能够启动或者访问Linux系统,这样才能修复它。下面就是一些应急措施的介绍。 更先应该想到,也许也是最简单的办法,就是当boot loader—通常都是grub—开始执行时,通过它调整系统运行级别。在出现菜单项后,按下键盘上的“e”按键,这样,菜单项能显示一个或者多个启动命令,找到有关内核的这一行,将光标移到上面,高亮这一行,再按下“e”,grub就会将这行内容用一个简单的编辑器环境打开,让我们能够对其做出改变。那么,到底怎么改变呢?很简单,只需要告诉init程序,我们希望通过那个级别启动即可。在内核命令行的最后加上“init X”参数,其中X表示你所希望的运行级别,举个实际例子模慎,如果你判断可能是因为显卡驱动或者分辨率导致的启动错误,就可以启动到命令行模式来修复它,那么,就应该把运行级别改为纯命令行模式,假设是4,改动后的内核命令行就应该是类似于这样的。 /boot/vmlinuz-2.6.17-11-generic root=UUID=5ccd-4cd0-abb2-74a132efbd7c ro vga=794 quiet splash init 4 这样,就等于告诉了init程序,我要以运行级别4启动,而不是默认的运行级别。 如果这些招数都无法奏效了,怎么办?难道我们就坐以待毙了?no。这里还有一个偏门可以供你使用。我们知道,在默认情况下,内此码帆核启动时会执行init程序,但是你可以指定不同的程序让内核来执行,只需要在后面添加参数“init=/some/program”即可。“/some/program”通常表示诸如/bin/bash或者/bin/sh这种shell程序。注意这里的等于符号,它的作用是告诉内核,你别启动init程序了,而是启动我等号后面所指定的任意程序吧。大体命令行如下: /boot/vmlinuz-2.6.17-11-generic root=UUID=5ccd-4cd0-abb2-74a132efbd7c ro vga=794 quiet splash init=/bin/bash 这样,你就可以直接启动到所指定的shell中,对发生的错误进行分析,修复等操作。 如果这样做都还是不行……好吧,我觉得你人品有问题!那么,还是拿出恢复cd,通常就是你的安装光盘,它允许你在启动时选择是否进入rescue修复模式。进入这个模式之后,他会自动找到你的硬盘安装的系统,并将它们挂载到一个临时目录下,这样,你就能进行修改配置文件或者其它修复操作了。 如果还是不行呢?恭喜你,回到Windows时代,还是老老实实重新安装吧。
对于使用Linux的人来说,迟早都可能在某一阶段遇到这个问题:你正在兴高采烈得探索你的系统,调整,优化以挖掘其更大的潜力,突然,omg,你发现,系统不能启动了!如果你之前已经习惯了使用Windows系统,我打赌,这是一个经常性的问题,而你最初闪出的念头就是格式化并重装系统。而对于Linux而言,重装系统绝对是最后的选择,只有在我们其它努力都作废之后,才需要考虑这一点。我个人认为,唯一能让人不得不重装系统的情况就是,不幸的你以root身份敲下了不幸的命令rm -rf /。恩,千万别模仿!虽然你贺困可以通过“ctrl c”来终止这该死的自杀操作。
对于Linux,一旦出现无法启动系统情况的时候,也许你知道错误大概出在哪里,有比较明确的伍此修复方向,比如调整屏幕分辨率,或者修改某个脚本,等等。但是,现在问题的关键,是需要能够启动或者访问Linux系统,这样才能修复它。下面就是一些应急措施的介绍。
更先应该想禅橘念到,也许也是最简单的办法,就是当boot loader—通常都是grub—开始执行时,通过它调整系统运行级别。在出现菜单项后,按下键盘上的“e”按键,这样,菜单项能显示一个或者多个启动命令,找到有关内核的这一行,将光标移到上面,高亮这一行,再按下“e”,grub就会将这行内容用一个简单的编辑器环境打开,让我们能够对其做出改变。那么,到底怎么改变呢?很简单,只需要告诉init程序,我们希望通过那个级别启动即可。在内核命令行的最后加上“init X”参数,其中X表示你所希望的运行级别,举个实际例子,如果你判断可能是因为显卡驱动或者分辨率导致的启动错误,就可以启动到命令行模式来修复它,那么,就应该把运行级别改为纯命令行模式,假设是4,改动后的内核命令行就应该是类似于这样的。
/boot/vmlinuz-2.6.17-11-generic root=UUID=5ccd-4cd0-abb2-74a132efbd7c ro vga=794 quiet splash init 4
这样,就等于告诉了init程序,我要以运行级别4启动,而不是默认的运行级别。
如果这些招数都无法奏效了,怎么办?难道我们就坐以待毙了?no。这里还有一个偏门可以供你使用。我们知道,在默认情况下,内核启动时会执行init程序,但是你可以指定不同的程序让内核来执行,只需要在后面添加参数“init=/some/program”即可。“/some/program”通常表示诸如/bin/bash或者/bin/sh这种shell程序。注意这里的等于符号,它的作用是告诉内核,你别启动init程序了,而是启动我等号后面所指定的任意程序吧。大体命令行如下:
/boot/vmlinuz-2.6.17-11-generic root=UUID=5ccd-4cd0-abb2-74a132efbd7c ro vga=794 quiet splash init=/bin/bash
这样,你就可以直接启动到所指定的shell中,对发生的错误进行分析,修复等操作。
如果这样做都还是不行……好吧,我觉得你人品有问题!那么,还是拿出恢复cd,通常就是你的安装光盘,它允许你在启动时选择是否进入rescue修复模式。进入这个模式之后,他会自动找到你的硬盘安装的系统,并将它们挂载到一个临时目录下,这样,你就能进行修改配置文件或者其它修复操作了。
如果还是不行呢?恭喜你,回到Windows时代,还是老老实实重新安装吧。
关于linux 恢复作业的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
成都网站营销推广找创新互联,全国分站站群网站搭建更好做SEO营销。
创新互联(www.cdcxhl.com)四川成都IDC基础服务商,价格厚道。提供成都服务器托管租用、绵阳服务器租用托管、重庆服务器托管租用、贵阳服务器机房服务器托管租用。
当前标题:如何在Linux系统中恢复未完成的作业? (linux 恢复作业)
当前地址:http://www.shufengxianlan.com/qtweb/news11/27461.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联