当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪linux前后台运行命令(jobs等)用法详解      在linux中,执行命令,尤其是前后台命令的执行与切换,主要用到如下的命令: 1,command& 让进程在后台运行 2,jobs 查看后台运行的进程 3,fg %n 让后台运行的进程n到前台来 4,bg %n 让.........
    ▪解析 Linux sync同步数据命令      sync命令是linux下的同步数据命令,其格式为:sync  用途:更新 i-node 表,并将缓冲文件写到硬盘中。 功能:sync命令是在关闭Linux系统时使用的。 注意: Linux在内存中缓存了许多数据,在关闭.........
    ▪Linux sync命令(数据同步写入磁盘)的作用有哪些      Sync命令 sync命令的作用,将有关文件系统的存储器常驻信息送入物理介质内。在暂停系统之前,比如要重新启动机器,一定要去执行sync命令。unix系统运行经验表明,为确保可靠起见,应执行.........

[1]linux前后台运行命令(jobs等)用法详解
    来源: 互联网  发布时间: 2013-12-24

在linux中,执行命令,尤其是前后台命令的执行与切换,主要用到如下的命令:
1,command& 让进程在后台运行
2,jobs 查看后台运行的进程
3,fg %n 让后台运行的进程n到前台来
4,bg %n 让进程n到后台去;   
   备注:此处的"n"为jobs查看到的进程编号。

下面我们详细介绍下它们的用法。

一,& 使用最多的后台命令调用方式
把命令放到后台执行:
 

代码示例:
[root@xxx ~]# bash while1.sh &
[1] 21704

二,ctrl + z
把正在前台执行的命令放到后台,并且暂停:
 

代码示例:
[1]+  Stopped  bash while1.sh

三,jobs
查看当前有多少在后台运行的命令
 

代码示例:
[root@xxx ~]# jobs
[1]+  Running  bash while1.sh &

四,fg
将后台中的命令调至前台继续运行
 

代码示例:
[root@xxx ~]# fg

bash while1.sh
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
 

代码示例:
[root@xxx ~]# fg 1
bash while1.sh

五,bg
将一个在后台暂停的命令,变成继续执行
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
 

代码示例:
[1]+  Stopped    bash while1.sh
# 目前命令为停止状态
[root@xxx ~]# bg  # 使用 bg 命令让它可以在后台继续执行
[1]+ bash while1.sh &
[root@xxx ~]# jobs # 查看后台正在运行的命令
[1]+  Running                 bash while1.sh &

#Linux下使用Shell命令控制任务Jobs执行
以下命令可以用来操纵进程任务:
1,ps 列出系统中正在运行的进程;
2,kill 发送信号给一个或多个进程(经常用来杀死一个进程);
3,jobs 列出当前shell环境中已启动的任务状态,若未指定jobsid,则显示所有活动的任务状态信息;如果报告了一个任务的终止(即任务的状态被标记为Terminated),shell 从当前的shell环境已知的列表中删除任务的进程标识;
4,bg 将进程搬到后台运行(Background);
5,fg 将进程搬到前台运行(Foreground);

一,将job转移到后台运行
在X图形下:通过终端命令运行一个GUI程序,GUI界面出来了,但是终端还停留在原地,不能在shell中继续执行其他命令了,除非将GUI程序关掉。
为了使程序执行后终端还能继续接受命令,你可以将进程移到后台运行,使用如下命令运行程序: #假设要运行xmms
$xmms &
这样打开xmms后,终端的提示又回来了。现在xmms在后台运行着呢;但万一你运行程序时忘记使用“&”了,又不想重新执行;你可以先使用ctrl+z挂起程序,然后敲入bg命令,这样程序就在后台继续运行了。

  概念:当前任务

  如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务。

查看jobs
使用jobs或ps命令可以察看正在执行的jobs。
 

代码示例:

[root@xxx ~]# jobs
# 使用 jobs 查看后台运行的命令
[1]-  Running                 bash while1.sh &
[2]+  Running                 bash while2.sh &
[root@xxx ~]# ps -ef | grep while | grep -v grep

# 使用 ps 查看运行的命令
root     21704 21672  0 23:41 pts/1    00:00:00 bash while1.sh
root     21804 21672  0 23:53 pts/1    00:00:00 bash while2.sh
 

  jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;

进程的挂起

后台进程的挂起:
  在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;
  在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;
  当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;

前台进程的挂起:
  ctrl+Z;

进程的终止
后台进程的终止:
方法一:
 

代码示例:

通过jobs命令查看job号(假设为num),然后执行kill %num
[root@xxx ~]# jobs #查看进程
[1]-  Running                 bash while1.sh &
[2]+  Running                 bash while2.sh &

[root@xxx ~]# kill %1 # 使用 kill 杀死进程
[root@xxx ~]# jobs
[1]-  Terminated              bash while1.sh
[2]+  Running                 bash while2.sh &

[root@xxx ~]# jobs
 #再来查看的时候第一个进程已经被杀死
[2]+  Running   

方法二:
 

代码示例:

通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
[root@xxx ~]# ps -ef | grep while | grep -v grep
root     21804 21672  0 Jul03 pts/1    00:00:00 bash while2.sh
[root@xxx ~]# ps -ef | grep while | grep -v grep

# 查看进程
root     21804 21672  0 Jul03 pts/1    00:00:00 bash while2.sh
[root@xxx ~]#
[root@xxx ~]# kill 21804  #使用 kill 杀死进程
[root@xxx ~]# ps -ef | grep while | grep -v grep
#再次查看 ,显示 kill 命令使该进程结束
[2]+  Terminated              bash while2.sh
[root@xxx ~]# ps -ef | grep while | grep -v grep
#再次查看,该进程没有了
前台进程的终止:
ctrl+c


    
[2]解析 Linux sync同步数据命令
    来源: 互联网  发布时间: 2013-12-24

sync命令是linux下的同步数据命令,其格式为:sync 
用途:更新 i-node 表,并将缓冲文件写到硬盘中。
功能:sync命令是在关闭Linux系统时使用的。

注意:
Linux在内存中缓存了许多数据,在关闭系统时,需要进行内存数据与硬盘数据的同步校验,保证硬盘数据在关闭系统时是最新的,只有这样才能确保数据不会丢失。

一般正常的关闭系统的过程是自动进行这些工作的,在系统运行过程中也会定时做这些工作,不需要用户干预。

sync命令是强制把内存中的数据写回硬盘,以免数据的丢失。用户可以在需要的时候使用此命令。

sync 命令运行 sync 子例程。如果必须停止系统,则运行 sync 命令以确保文件系统的完整性。
sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。

Linux下sync命令

使用方式:sync
使用说明:Linux 系统中欲写入硬盘的资料,有时为了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,此资料会消息,sync 指令会将存于 buffer 中的资料强制写入硬盘中。


    
[3]Linux sync命令(数据同步写入磁盘)的作用有哪些
    来源: 互联网  发布时间: 2013-12-24

Sync命令

sync命令的作用,将有关文件系统的存储器常驻信息送入物理介质内。在暂停系统之前,比如要重新启动机器,一定要去执行sync命令。unix系统运行经验表明,为确保可靠起见,应执行两遍sync命令,这是因为sync命令完成时,并不保证信息实际写到了磁盘上,虽然已经执行了一遍这个命令。在执行sync命令以后,要等待磁盘工作灯灭了(假定有系统工作指示灯的话),再去真正暂停机器的运行或启动机器。
unix系统遭受破坏是随时都可能发生的事情,因此在启动机器或关机之前一定要运行sync命令。记住在任何情况下,慎重地执行sync命令决不会有任何坏处
 
umount时间过长,sync命令的使用有一个问题,比如 cp 一个文件到SD卡上,是不是首先先将这个文件写到SDRAM上,然后umount的时候再将SDRAM中的内容真正写SD卡上? 我umount的时候会过多一会才出现终端的提示符,根据写入文件的大小确定 umount的时间? 

Linux文件系统更新是一个复杂的过程,当用户程序对文件系统进行修改以后,例如进行了写操作,文件数据把修改记录在内核缓冲中,在数据没有写到磁盘的时候,依然能够执行用户进程,所有数据的改变都在inode的内容中得到反映。

磁盘的数据更新实际上是异步进行的,很有可能在写操作已经完成很长时间以后才真正对磁盘的数据进行更新。
sync命令强制把磁盘缓冲的所有数据写入磁盘,如果在没有把磁盘缓冲区的信息写入磁盘之前终止系统,则磁盘的文件系统就会处在一个不稳定的状态。

而在正常模式下即使没有对分区进行umount的操作,在重启之前系统会调用sync命令强制把磁盘缓冲的所有数据写入磁盘,而在急救模式下必须对所挂的分区进行umount的操作,系统才会调用sync命令强制把磁盘缓冲的所有数据写入磁盘,请在急救模式下的朋友注意这个问题。其实“reboot -n(Don’t sync before reboot or halt)”在重启之前不用sync命令强制把磁盘缓冲的所有数据写入磁盘,就很能说明问题。

所以要 cp 完之后要执行 sync 命令将缓冲区的内容写到磁盘中,然后再umount 就不会出现延时了.
 
经验证,采用此方法,延迟写入问题可以解决。

今天发现在复制文件(10K左右)到目标板时,很快就重启系统,然后再看复制过去的文件节点还在,但大小为0。
要用sync命令强行将文件缓冲区的数据写入磁盘。

因此,编程写文件时,注意:
Linux 系统中欲写入硬盘的资料有的时候为了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会丢失了,sync 指令会将存于 buffer 中的资料强制写入硬盘中。

linux sync命令

数据同步写入磁盘: sync

在Linux系统中,为了加快数据的读取速度,所以在默认的情况中, 某些已经加载内存中的数据将不会直接被写回硬盘,而是先缓存在内存当中,如此一来, 如果一个数据被你重复的改写,那么由于他尚未被写入硬盘中,因此可以直接由内存当中读取出来, 在速度上一定是快上相当多的!

不过,如此一来也造成些许的困扰,那就是万一你的系统因为某些特殊情况造成不正常关机 (例如停电或者是不小心踢到power)时,由于数据尚未被写入硬盘当中,哇!所以就会造成数据的升级不正常啦! 那要怎么办呢?这个时候就需要sync这个命令来进行数据的写入动作啦!
直接在文字接口下输入sync,那么在内存中尚未被升级的数据,就会被写入硬盘中!

此命令在系统关机或重新启动之前,最好多运行此次,

说明一下,shutdown/reboot/halt 等命令均已经在关机前自动执行了sync命令:
[root@www ~]# sync

在linux下使用sync的一个问题:
在linux平台上写了文件,但是重启后,数据丢失了,经过测试,发现是没有手动调用“sync”命令,导致了数据的丢失造成的。
sync在系统无法执行updata或者bdflash时;或用户需要非正常关机时,需要执行此命令。
注意:如果非正常关机,则需要手动执行sync命令。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
网络技术 iis7站长之家
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3