Linux下主要的bash shell指令(二)

来源:互联网 发布:验证码 源码 编辑:程序博客网 时间:2024/06/06 12:36

1.ps命令探查进程

ubuntu@VM-150-204-ubuntu:~$ ps  PID TTY          TIME CMD 2836 pts/0    00:00:00 bash11136 pts/0    00:00:00 ps

  上例中的基本输出显示了程序的进程号(PID)、它们运行在哪个终端(TTY)以及进程已用的CPU时间。
  如果要查看系统上运行的所有进程,可以用-ef参数:

ubuntu@VM-150-204-ubuntu:~$ ps -efUID        PID  PPID  C STIME TTY          TIME CMDroot         1     0  0 Sep01 ?        00:00:01 /sbin/initroot         2     0  0 Sep01 ?        00:00:00 [kthreadd]root         3     2  0 Sep01 ?        00:00:03 [ksoftirqd/0]root         5     2  0 Sep01 ?        00:00:00 [kworker/0:0H]root         7     2  0 Sep01 ?        00:00:04 [rcu_sched]root         8     2  0 Sep01 ?        00:00:00 [rcu_bh]root         9     2  0 Sep01 ?        00:00:00 [migration/0]...udev-bridge --daemonroot       262     1  0 Sep01 ?        00:00:00 /lib/systemd/systemd-udevd --daemessage+   338     1  0 Sep01 ?        00:00:00 dbus-daemon --system --forkroot       359     1  0 Sep01 ?        00:00:00 /lib/systemd/systemd-logindsyslog     374     1  0 Sep01 ?        00:00:02 rsyslogd.../usr/sbin/sshd -Droot      2787  1580  0 19:44 ?        00:00:00 sshd: root@pts/0root      2821  2787  0 19:44 pts/0    00:00:00 -bashroot      2835  2821  0 19:44 pts/0    00:00:00 su ubuntuubuntu    2836  2835  0 19:44 pts/0    00:00:00 bashubuntu   11307  2836  0 22:21 pts/0    00:00:00 ps -ef

这些扩展的列包含了如下信息:

  • UID:启动这些进程的用户
  • PID:进程的进程号
  • PPID:父进程的进程号(如果该进程是由另一个进程启动的)
  • C:进程周期中的CPU利用率
  • STIME:进程启动时的系统时间
  • TTY进程启动时的终端
  • TIME:运行进程需要的累计CPU时间
  • CMD:启动的程序名称

2.top命令实时监测进程

ubuntu@VM-150-204-ubuntu:~$ toptop - 22:30:05 up 3 days, 11:39,  1 user,  load average: 0.00, 0.01, 0.05Tasks:  75 total,   1 running,  74 sleeping,   0 stopped,   0 zombie%Cpu(s):  0.7 us,  0.0 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 stKiB Mem:   1025964 total,   606560 used,   419404 free,   186740 buffersKiB Swap:        0 total,        0 used,        0 free.   315028 cached Mem  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND 1064 root      20   0   52844   8136   1792 S  0.3  0.8   5:20.55 barad_agent    1 root      20   0    4312   2240   1392 S  0.0  0.2   0:01.51 init    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd    3 root      20   0       0      0      0 S  0.0  0.0   0:03.18 ksoftirqd/0    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H    7 root      20   0       0      0      0 S  0.0  0.0   0:04.84 rcu_sched    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh    9 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0   10 root      rt   0       0      0      0 S  0.0  0.0   0:00.88 watchdog/0   11 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 khelper   12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs   13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns   14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback   15 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd   16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset   17 root       0 -20       0      0      0 S  0.0  0.0   0:00.56 kworker/u3:0   18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kblockd

输出的第一部分显示的是系统的概况:第一行显示了当前时间、系统的运行时间、登入的用户数以及系统的平均负载。
平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的。通常如果系统的负载值超过了2,说明系统比较繁忙。
第二行显示了进程信息:多少进程处在运行、休眠、停止、或是僵化状态(僵化状态是指进程完成了,但父进程没有响应)。
列表信息介绍如下:

  • PR:进程的优先级
  • NI:进程的谦让度值。
  • VIRT:进程占用的虚拟内存量
  • RES:进程占用的物理内存总量
  • SHR:进程和其他进程共享的内存总量
  • S:进程的状态(D代表可中断的休眠状态,R代表运行状态,S代表休眠状态,T代表跟踪状态或停止状态,Z代表僵化状态)
  • TIME+:自进程启动到目前为止的CPU时间总量

3.结束进程

(1)kill命令
kill命令可通过PID给进程发信号。默认情况下,kill命令会向命令行中列出的全部PID发送一个TERM信号。TERM信号告诉进程可能的话停止运行。

# kill -s KILL 3940

-s参数支持指定其他信号,其中kill信号的强制性最强
(2)killall命令
它支持通过进程名而不是进程号来结束进程,killall命令也支持通配符。

# killall http*

上例的命令结束了所有以http开头的进程,比如Apache Web服务器的httpd服务。

4.挂载存储媒体

(1)mount命令
默认情况下,mount命令会输出当前系统上挂载的设备列表:

ethan@ethan-ThinkPad:~$ mountsysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)udev on /dev type devtmpfs (rw,nosuid,relatime,size=1863432k,nr_inodes=465858,mode=755)devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000).../dev/sda1 on /boot type ext2 (rw,relatime,block_validity,barrier,user_xattr,acl,stripe=4)tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=377620k,mode=700,uid=1000,gid=1000)gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)/dev/sdb4 on /media/ethan/GSP1RMCULXF type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)

mount命令提供如下四部分的信息

  • 媒体的设备文件名
  • 媒体挂载到虚拟目录的挂载点
  • 文件系统的类型
  • 已挂载媒体的访问状态

手动将U盘挂载到/media/disk,可用下面的命令:
  mount -t type device directory

# mount -t vfat /dev/sdb4 /media/disk

(2)umount命令
umount命令支持通过设备文件或者是挂载点来指定要卸载的设备。

ethan@ethan-ThinkPad:/media$ sudo umount /dev/sdb4

(3)df命令
df命令用来查看所有已挂载磁盘的使用情况:

ethan@ethan-ThinkPad:~$ dfFilesystem                         1K-blocks    Used Available Use% Mounted onudev                                 1863432       0   1863432   0% /devtmpfs                                 377620    6240    371380   2% /run/dev/mapper/ubuntu--kylin--vg-root 476232744 6149300 445869124   2% /.../dev/sda1                             482922   68238    389750  15% /boottmpfs                                 377620      44    377576   1% /run/user/1000/dev/sdb4                            7577472   12004   7565468   1% /media/ethan/GSP1RMCULXF

命令输出如下:
* 设备的设备文件位置
* 能容纳多少1K字节的大小块
* 已用了多少个1K字节的大小的块
* 还有多少个1K字节的大小块可用
* 已用空间所占比例
* 设备挂载到了哪个挂载点上

df -h会把输出中的磁盘空间按人类可读的形式显示

(4)du命令
du命令可以显示某个特定目录的磁盘使用情况,这是用来判断你系统上某个目录下是不是有超大文件的快速方法。

ubuntu@VM-150-204-ubuntu:~$ sudo du -h[sudo] password for ubuntu:4.0K    ./.cache4.0K    ./.ssh36K     .

5.sort命令用来对数据进行排序

$ sort file1

6.grep命令搜索数据

grep [options] pattern [file]

grep命令会到输入中或你指定的文件中查找包含匹配指定模式的字符的行。grep的输出就是包含了匹配模式的行。

$ grep t filetwothree

如果要进行反向搜索,可加-v参数:

$ grep -v t file1onefourfive

grep命令可用基本的Unix风格正则表达式来匹配模式。egrep命令是grep的一个衍生,支持POSIX扩展正则表达式。

7.压缩数据

Linux文件的压缩工具:

工具 文件扩展名 描述 bzip2 .bz2 采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码 compress .Z 原始的Unix文件压缩工具,逐渐消失中 gzip .gz GNU压缩工具,用Lempel-Ziv编码 zip .zip Windows上PKZIP工具的Unix实现

(1)bzip2工具

  • bzip2:用来压缩文件
  • bzcat:用来显示压缩文本文件的内容
  • bunzip2:用来解压压缩后的.bz2文件
  • bzip2recover:用来尝试恢复损毁的压缩文件

(2)gzip工具
Linux上最流行的文件压缩工具

  • gzip:用来压缩文件
  • gzcat:用来查看压缩过的文本文件的内容
  • gunzip:用来解压文件

(3)zip工具
zip工具和Windows下的zip是兼容的。

  • zip:创建一个压缩文件,包含指定的文件和目录
  • zipcloak:创建一个加密的压缩文件
  • zipnote:从zip中提取批注
  • unzip:从压缩过的zip文件中提取文件和目录

zip工具的强大之处在于,它能将整个目录下的文件都压缩进单个文件。这让它成为整个目录结构的理想工具

ethan@ethan-ThinkPad:~$ zip -r testzip test1  adding: test1/ (stored 0%)  adding: test1/helloworld (deflated 69%)  adding: test1/helloworld.cpp (deflated 19%)  adding: test1/helloworld.cpp~ (deflated 18%)

这个例子创建了一个叫test.zip的zip文件,并递归目录test1把找到的每个文件和目录都加进该zip文件

8.归档数据

目前Unix和Linux上最广泛使用的归档工具是tar命令而不是zip命令。
tar命令的语法格式如下:

tar function [option] object1 object2...

例:

tar -cvf test.tar test/ test2/

上面的命令创建了一个含有test和test2目录内容的叫test.tar的归档文件。接着,用这个命令:

tar -tf test.tar

列出tar文件test.tar的内容,但并不解压文件。最后,用命令

tar -xvf test.tar

来从tar文件test.tar提取内容。
注:当看到文件名以.tgz结尾,这些是gzip压缩过的tar文件,可以用命令tar -zxvf filename.tgz来解压

0 0
原创粉丝点击