当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪linux命令后台运行的方法分享      linux控制台有两种方式: 1. command & : 后台运行, 关掉终端会停止运行 2. nohup command & : 后台运行, 关掉终端也会继续运行 一、 简介 Linux/Unix 是真正的多用户,多任务系统。因此在.........
    ▪linux系统磁盘分区之parted命令      linux的磁盘分区命令之parted工具。 对于分区表通常有MBR分区表和GPT分区表 对于磁盘大小小于2T的磁盘,我们可以使用fdisk和parted命令工具进行分区 对于MBR分区表的特点(通常使用fdisk命令进.........
    ▪linux系统磁盘分区之fdisk命令      本节介绍fdisk操作磁盘的基本命令和场景模拟。 fdisk命令的常用选项:   fdisk -l 查看所有磁盘信息   fdisk /dev/sdb  使用fdisk命令工具操作/dev/sdb磁盘   m   显示所有的命令信息、用法   p  .........

[1]linux命令后台运行的方法分享
    来源: 互联网  发布时间: 2013-12-24

linux控制台有两种方式:
1. command & : 后台运行, 关掉终端会停止运行
2. nohup command & : 后台运行, 关掉终端也会继续运行

一、 简介
Linux/Unix 是真正的多用户,多任务系统。因此在任务管理上也有别具特色的管理思想。
Linux 提供了 fg 和bg 命令,让 轻松调度正在运行的任务。假设 发现前台运行的一个程序需要很长的时间,但是需要干其他的事情, 就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示:
[1]+ Stopped /root/bin/rsync.sh
然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)
 

代码示例:
#bg 1
[1]+ /root/bin/rsync.sh &
 

用 jobs 命令查看正在运行的任务:
 

代码示例:
#jobs
[1]+ Running /root/bin/rsync.sh &
 

如果想把它调回到前台运行,可以用
 

代码示例:
#fg 1
/root/bin/rsync.sh
 

这样,在控制台上就只能等待这个任务完成了。

& 将指令丢到后台中去执行
[ctrl]+z 將前台任务丟到后台中暂停
jobs 查看后台的工作状态
fg %jobnumber 将后台的任务拿到前台来处理
bg %jobnumber 将任务放到后台中去处理
kill 管理后台的任务

二、&
在Linux中,当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。实际上,这样是将命令放入到一个作业队列中了:
 

代码示例:

$ ./test.sh &
[1] 17208

$ jobs -l
[1]+ 17208 Running  ./test.sh &
 

    在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样 的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰 的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:
 

代码示例:
command >out.file 2>&1 &
 

在上面的例子中,2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。 当 成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。
例:查找名为“httpd.conf”的文件,并把所有标准输出和错误输出重定向到find.dt的文件中:
 

代码示例:
# find /etc/httpd/ -name "httpd.conf" -print >find.dt 2>&1 &
[2] 7832
 

成功提交该命令之后,系统给出了它的进程号7832。 对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行,例如对正在前台执行的tesh.sh使用ctrl+z挂起它:
 

代码示例:

$ ./test.sh
[1]+ Stopped   ./test.sh

$ bg %1
[1]+ ./test.sh &

$ jobs -l
[1]+ 22794 Running  ./test.sh &

但是如上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。
如果要在退出shell时继续运行进程,则需要使用nohup忽略hangup信号,或者setsid将将父进程设为init进程(进程号为1)
 

代码示例:

$ echo $$
21734

$ nohup ./test.sh &
[1] 29016

$ ps -ef | grep test
515      29710 21734 0 11:47 pts/12   00:00:00 /bin/sh ./test.sh
515      29713 21734 0 11:47 pts/12   00:00:00 grep test
$ setsid ./test.sh &
[1] 409

$ ps -ef | grep test
515        410     1 0 11:49 ?        00:00:00 /bin/sh ./test.sh
515        413 21734 0 11:49 pts/12   00:00:00 grep test
 

上面的试验演示了使用nohup/setsid加上&使进程在后台运行,同时不受当前shell退出的影响。那么对于已经在后台运行的进程,该怎么办呢?可以使用disown命令:
 

代码示例:

$ ./test.sh &
[1] 2539

$ jobs -l
[1]+ 2539 Running  ./test.sh &

$ disown -h %1

$ ps -ef | grep test
515        410     1 0 11:49 ?        00:00:00 /bin/sh ./test.sh
515       2542 21734 0 11:52 pts/12   00:00:00 grep test
 

另外还有一种方法,即使将进程在一个subshell中执行,其实这和setsid异曲同工。
方法很简单,将命令用括号() 括起来即可:
 

代码示例:

$ (./test.sh &)

$ ps -ef | grep test
515        410     1 0 11:49 ?        00:00:00 /bin/sh ./test.sh
515      12483 21734 0 11:59 pts/12   00:00:00 grep test
 

注:本文试验环境为Red Hat Enterprise Linux AS release 4 (Nahant Update 5),shell为/bin/bash,不同的OS和shell可能命令有些不一样。例如AIX的ksh,没有disown,但是可以使用nohup -p PID来获得disown同样的效果。

还有一种更加强大的方式是使用screen,首先创建一个断开模式的虚拟终端,然后用-r选项重新连接这个虚拟终端,在其中执行的任何命令,都能达到nohup的效果,这在有多个命令需要在后台连续执行时比较方便:
 

代码示例:

$ screen -dmS screen_test

$ screen -list
There is a screen on:
        27963.screen_test       (Detached)
1 Socket in /tmp/uscreens/S-jiangfeng.

$ screen -r screen_test

三、 nohup
如果正在运行一个进程,而且觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。
该命令可以在 退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。 该命令的一般形式为:
nohup conmmand &
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1
在上面的例子中,输出被重定向到myout.file文件中。

四、.*,?,[...],[!...]等
下面就是这些特殊字符:
* 匹配文件名中的任何字符串,包括空字符串。
? 匹配文件名中的任何单个字符。
[...] 匹配[ ]中所包含的任何字符。
[!...] 匹配[ ]中非感叹号!之后的字符。
当s h e l l遇到上述字符时,就会把它们当作特殊字符,而不是文件名中的普通字符,这样用户就可以用它们来匹配相应的文件名。

1)列出以i或o开头的文件名:     #ls [io]*
2)列出log.开头、后面跟随一个数字、然后可以是任意字符串的文件名: #ls log.[0-9]*
3)与例二相反,列出log.开头、后面不跟随一个数字、然后可以是任意字符串的文件名 : #ls log.[!0-9]*
4)列出所有以LPS开头、中间可以是任何两个字符,最后以1结尾的文件名:#ls LPS??1
5)列出所有以大写字母开头的文件名:$ ls [A-Z]* 6)列出所有以. 开头的文件名(隐含文件,例如. profile、.rhosts、.histo ry等): $ ls .*

其他相关命令:
jobs:查看当前有多少在后台运行的命令
fg:将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
bg:将一个在后台暂停的命令,变成继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

杀死进程
杀死已启动的程序:
 

代码示例:
pkill -9 name
killall name
kill pid

    
[2]linux系统磁盘分区之parted命令
    来源: 互联网  发布时间: 2013-12-24

linux的磁盘分区命令之parted工具。

对于分区表通常有MBR分区表和GPT分区表
对于磁盘大小小于2T的磁盘,我们可以使用fdisk和parted命令工具进行分区
对于MBR分区表的特点(通常使用fdisk命令进行分区)
 所支持的最大磁盘大小:2T
 最多支持4个主分区或者是3个主分区加上一个扩展分区
对于GPT分区表的特点(使用parted命令进行分区)
 支持最大卷:18EB(1EB=1024TB)
 最多支持128个分区

对于parted命令工具分区的介绍

fdisk -l 查看磁盘信息
parted /dev/sdb  使用parted工具操作磁盘/dev/sdb
mktable gpt  或者 mklabel gpt 把磁盘/dev/sdb 格式化为 gpt分区表
mkpart primary  0MB 50MB  创建一个50M大小的主分区
mkpart extended 50MB 100MB 创建一个50M大小的扩展分区
rm 1 删除number为1 的分区
print 显示磁盘 /dev/sdb的相关信息
help  显示帮助命令
退出parted命令,在linux命令行窗口对分区进行格式化
mkfs.ext4 /dev/sdb2 格式化磁盘/dev/sdb的第二个分区为ext4格式的分区
//实现磁盘自动挂载
vi /etc/fstable
/dev/sdb2 /backup  ext4  defaults   1 2

场景模拟:
需求有一个1G的磁盘/dev/sdc,
需要分区表会gpt格式,
分为两个400MB的分区,
一个主分区,一个扩展分区,
格式化文件系统为ext4格式
并且实现开机自动挂载,其中两个目录分别是 /backup  /datafile

1 使用 fdisk -l 进行磁盘信息查看
     fdisk -l
2 使用命令parted 操作 /dev/sdc
    

代码示例:
parted /dev/sdc
 

3 格式化为gpt格式的分区表
    

代码示例:
mktable gpt
 

4  创建一个400M的主分区
  

代码示例:
mkpart primary 0MB 400MB

5  退出
    quit

6  格式化文件系统为ext4
  

代码示例:
mkfs.ext4 /dev/sdc1
 

7  创建两个目录
  

代码示例:
mkdir /backup
   mkdir /datafile

8  进行磁盘扩展(提示:对于已经格式化分区表为gpt格式的磁盘直接扩展请参考以下)
     parted /dev/sdc
 
9  mkpart extended 400MB 800MB

10 查看磁盘信息
    print

11 退出
    quit
12 格式化文件系统为ext4
    mkfs.ext4 /dev/sdc2
13 配置开机自动挂载磁盘
   vi  /etc/fstab
 

   /dev/sdc1  /backup   ext4   default   1 2
   /dev/sdc2  /datafile  ext4  default   1 2

 注意:操作过程中,可能需要重启系统才会生效。


    
[3]linux系统磁盘分区之fdisk命令
    来源: 互联网  发布时间: 2013-12-24

本节介绍fdisk操作磁盘的基本命令和场景模拟。

fdisk命令的常用选项:
 

fdisk -l 查看所有磁盘信息
  fdisk /dev/sdb  使用fdisk命令工具操作/dev/sdb磁盘
  m   显示所有的命令信息、用法
  p   显示分区信息
  q   退出
  w   保存分区信息,只有执行了w命令后才会把分区信息写入到磁盘
  d 1  删除磁盘的第一个分区

场景模拟:
有一个1G的磁盘/dev/sdb
分区为一个主分区,一个扩展分区,大小都为200M
其中在扩展分区上面建立一个100M的逻辑分区 /dev/sdb5
格式化文件系统为 mkfs.ext4
实现开机自动挂载到目录 /backup3

1 使用fdisk命令工具操作磁盘/dev/sdb
 

代码示例:
   fdisk /dev/sdb

2 创建一个主分区
 

代码示例:

Command (m for help): n
 Command action
    e   extended
    p   primary partition (1-4)
 p
 Partition number (1-4): 1
 Using default value 1
 Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +400M

 Command (m for help): p

 Disk /dev/sdb: 1073 MB, 1073741824 bytes
 255 heads, 63 sectors/track, 130 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0004a98a

    Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1               1          52      417658+  83  Linux

3 创建一个扩展分区
 

代码示例:

Command (m for help): n
 Command action
    e   extended
    p   primary partition (1-4)
 e
 Partition number (1-4): 2
 First cylinder (53-130, default 53):
 Using default value 53
 Last cylinder, +cylinders or +size{K,M,G} (53-130, default 130): +400M

 Command (m for help): p

 Disk /dev/sdb: 1073 MB, 1073741824 bytes
 255 heads, 63 sectors/track, 130 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0004a98a

    Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1               1          52      417658+  83  Linux
 /dev/sdb2              53         104      417690    5  Extended

4 创建一个逻辑分区
 

代码示例:

 Command (m for help): n
 Command action
    l   logical (5 or over)
    p   primary partition (1-4)
 l
 First cylinder (53-104, default 53):
 Using default value 53
 Last cylinder, +cylinders or +size{K,M,G} (53-104, default 104): +100M

 Command (m for help): p

 Disk /dev/sdb: 1073 MB, 1073741824 bytes
 255 heads, 63 sectors/track, 130 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0004a98a

    Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1               1          52      417658+  83  Linux
 /dev/sdb2              53         104      417690    5  Extended
 /dev/sdb5              53          66      112423+  83  Linux

5 保存
 

代码示例:

Command (m for help): w
 The partition table has been altered!

 Calling ioctl() to re-read partition table.
 Syncing disks.

6 对磁盘进行分区
 

代码示例:

[root@hsj2 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
104448 inodes, 417656 blocks
20882 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
51 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@hsj2 ~]# mkfs.ext4 /dev/sdb5
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
28112 inodes, 112420 blocks
5621 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
14 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

至此,则分区搞定,结束工作。


    
最新技术文章:
▪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脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪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