more bash shell command

更多bash shell命令

4.1 监控程序

4.1.1 进程查看

       ps默认只显示属于当前用户并正在当前终端中运行的进程。

 

       Linux系统中使用的GNU ps命令支持3中不同的命令行:

l  Unix类型参数:前面有一个短划线;

l  BSD类型参数:前面没有短划线;

l  GNU长参数:前面有双短划线;

 

ps –H 可以将进程组织为分层格式,可以显示哪些流程是随其他进程一起启动的。

4.1.2 实时进程监控

       top命令可以内存中换进换出的进程,它是实时模式,而ps只能显示特定时间点的信息。

4.1.3 停止进程

       linux中,各进程使用信号相互通信。大多数精心编写的应用程序都能够接受标准Unix进程信号,并对此作出响应。

Linux进程信号

SIGHUP     终止进程     终端线路挂断
SIGINT     
终止进程     中断进程
SIGQUIT   
建立CORE文件终止进程,并且生成core文件
SIGILL   
建立CORE文件       非法指令
SIGTRAP   
建立CORE文件       跟踪自陷
SIGBUS   
建立CORE文件       总线错误
SIGSEGV   
建立CORE文件       段非法错误
SIGFPE   
建立CORE文件       浮点异常
SIGIOT   
建立CORE文件       执行I/O自陷
SIGKILL   
终止进程     杀死进程
SIGPIPE   
终止进程     向一个没有读进程的管道写数据
SIGALARM   
终止进程     计时器到时
SIGTERM   
终止进程     软件终止信号
SIGSTOP   
停止进程     非终端来的停止信号
SIGTSTP   
停止进程     终端来的停止信号
SIGCONT   
忽略信号     继续执行一个停止的进程
SIGURG   
忽略信号     I/O紧急信号
SIGIO     
忽略信号     描述符上可以进行I/O
SIGCHLD   
忽略信号     当子进程停止或退出时通知父进程
SIGTTOU   
停止进程     后台进程写终端
SIGTTIN   
停止进程     后台进程读终端
SIGXGPU   
终止进程     CPU时限超时
SIGXFSZ   
终止进程     文件长度过长
SIGWINCH   
忽略信号     窗口大小发生变化
SIGPROF   
终止进程     统计分布图用计时器到时
SIGUSR1   
终止进程     用户定义信号1
SIGUSR2   
终止进程     用户定义信号2
SIGVTALRM
终止进程     
虚拟计时器到时

Linux提供了两个命令用于发送进程信号给运行中的进程:

l  kill命令

n  只能使用进程PID来终止信号,将发送TERM命令给指定的PID

l  killall命令

n  该命令非常强大,可以根据进程的名称来停止进程,还允许使用通配符,它对于处理出错的系统非常有用。

4.2 监控磁盘空间

4.2.1 挂载介质

       mount –t type device directory

       mount –a :挂载/etc/fstab文件中指定的所有文件系统

其中可能的类型为:

l  vfat Windows长文件系统

l  ntfs Windows高级文件系统

l  iso9660 标准CD-ROM文件系统

常用的选项:

l  ro:以只读形式挂载;

l  rw:以读写形式挂载;

l  user:允许普通用户挂载文件系统;

l  check=none:挂载文件系统,而不执行完整性检查;

l  loop:挂载某个文件

4.2.2 使用df命令

       某个设备上有多少可用磁盘空间,较常用的参数为-h,用于以可读形式显示磁盘空间。

4.2.3 使用du命令

       du命令显示当前目录下的所有的文件、目录和子目录,并显示各文件或目录占用了多大空间。可以使用参数-s来汇总各自变量。

4.3 操作数据文件

4.3.1 数据排序

       sort:默认按照标准字符排序,所以如果是数字,需要加上参数-n来将其识别为数字而不是字符,并根据数值大小对它们进行排序;使用-M参数,可以按照月份排序;使用-k-t参数可以方便对使用字段的数据进行排序,其中-t参数用于指定字段分隔符,-k参数用于指定排序的字段。

       比如可以对一个文件夹中的所有文件大小进行一个排序:du –sh * | sort –n即可。

4.3.2 搜索数据

       grep patterm file

可用使用-v参数来反向搜索;使用-n参数显示与模式匹配的数据所在的行号;使用-c参数显示有多少行包含匹配模式;使用-e参数指定多个匹配模式;

       egrep命令式grep命令的一个分支,它允许您指定POSIX扩展的正则表达式,即使用多个字符指定匹配模式;fgrep命令则允许您使用一列由换行符分隔的固定字符串值来指定匹配模式。

4.3.3 压缩数据

Linux文件压缩格式:

l  *.Z       compress 程序压缩的档案; 

l  *.bz2     bzip2 程序压缩的档案; 

l  *.gz      gzip 程序压缩的档案; 

l  *.tar     tar 程序打包的数据,并没有压缩过 

l  *.tar.gz  tar 程序打包的档案,其中并且经过gzip 的压缩!

l  *.zip     zip 程序压缩文件

l  *.rar     rar 程序压缩文件

使用bzip2的文件可以使用bzcat命令查看内容

4.3.4 归档数据

       虽然zip命令在压缩和归档数据方面格外出色,但是它不是UnixLinux世界中的标准工具。目前,UnixLinux中最流行的归档工具是tar命令。

join命令

join命令可基于两个文件的共同项,把他们合并起来

在下例中,我们有两个文件,分别是employee.txtbonus.txt,他们拥有共同的项– employee-id

所以我们基于employee-id项,将两个文件合并起来。

$ cat employee.txt

100 Jason Smith

200 John Doe

300 Sanjay Gupta

400 Ashok Sharma

 

$ cat bonus.txt

100 $5,000

200 $500

300 $3,000

400 $1,250

 

$ join employee.txt bonus.txt

100 Jason Smith $5,000

200 John Doe $500

300 Sanjay Gupta $3,000

400 Ashok Sharma $1,250

用Ctrl + R搜索历史命令

我非常确信这应该是你最常使用的history特性,当你执行了一串相当长的命令之后,你只要用关键字搜索一下历史命令然后重新执行这条命令而不需要将整条命令再输一遍。

方法是:按下Ctrl + R然后输入关键字

在以下示例中,我搜索“red”,则显示以前的命令中含有”red”的命令“cat /etc/redhat-release”

[注:在命令行提示符下按下CtrlR,终端将显示如下提示―reverse-i-search(reverse-i-search)`red`: cat /etc/redhat-release [注:当看到你要的命令后按回车键,就可以重新执行这条命令了]

# cat /etc/redhat-release Fedora release 9 (Sulphur) 而有的时候你需要在执行一条历史命令之前编辑它.比如,你可以像下面那样搜索“httpd”,终端显示历史命令“service httpd stop”,选择它把“stop”改为“start”然后执行它

[: 在命令提示符下按 Ctrl+R , 将会显示提示符reverse-i-search] (reverse-i-search)`httpd`: service httpd stop