Linux基础

    • 命令

1.1小知识大作用

"$"与"#":在BASH中,命令行以一个没有符号"$"作为提示符,表示用户可以录入命令。如果正在以root身份执行命令,那么Shell提示符将成为"#"。

命令行补全:在输入文件名的时候,输入前面几个字符,然后按下Tab键,Shell会自动把文件名补全。如果已键入的字符开头的文件不知一个,那么可以连续按下Tab键两次,Shell会以列表的形式给出所有以键入字符开头的文件。 命令行补全也适用于所有Linux命令(系统命令本质上就是一些可执行文件,可以在/usr/bin目录下找到。从这种意义上讲,命令补全和文件补全其实是一样的)。

通配符:"*"、"?"、"[]"。这些通配符可以搜索并匹配文件名的一部分,从而简化命令的输入,这使得批量操作称为可能。"*"用于匹配文件名中任意长度的字符串(例如列出所有.java结束的文件,ls *.java);"?"只匹配一个字符;"[]"用于匹配所有出现在方括号内的字符,也可以通过短线"-"来指定一个字符集范围,所有包含在上下界之间的字符都会被匹配。

1.2常用命令

  1. pwd

$ pwd ##pwd命令会显示当前所在位置,即工作目录。
  1. cd

##cd命令是在Linux文件系统的不同部分之间移动的基本工具。当登录系统之后,默认处于用户主目录中。
$ cd /usr/bin  ##切换目录到/usr/bin
$ cd /  ##直接进入根目录
$ cd ~  ##进入用户主目录
##提示:在Shell中".."代表当前目录的上一级目录,而"."代表当前目录,另外"~"代表用户主目录
  1. ls

##ls命令是list简化形式,作用是列出目录内容。ls命令选项非常多,以下列举常用的。
##ls基本语法ls [OPYION]... [FILE]...
$ ls ##不带任何参数的ls命令,用于列出当前目录下的所有文件和子目录。在这个列表中,可以方便区分目录和文件。默认情况下,目录显示为蓝色;普通文件显示未黑色;可执行文件显示未草绿色;淡蓝色则表示这个文件是一个连接文件
$ ls -F ##-F选项会在每个目录后加上/,在可执行文件后加*,在链接文件后加上@。
$ ls -a ##Linux中,很多头部带"."的文件名被称为隐含文件,在默认情况下并不会显示,除非指定了-a选项,用于显示所有文件。命令的选项可以组合使用,指定多个选项只需要使用一个短线。
$ ls -l ##查看文件的各种属性
##在Linux中,dir除了比ls的功能更少,其它都一样。vdir相当于ls -l
  1. cat / more

##cat命令用于查看文件内容。cat命令会一次将所有的内容全部显示在屏幕上
$ cat 文件1 ##后边文件名作为参数
$ cat 文件1 文件2  ##cat可以跟多个文件名作为参数。当然也可以使用通配符
$ cat -n 文件名1 ##显示行号
##more命令会在最后一行显示一个百分比,表示已显示内容占整个文件的比例。按下空格键向下翻动一页,按Enter键向下滚动一行。按Q键退出。
  1. head / tail

##head与tail分别显示文件的开头和结尾。可以使用-n参数来指定显示的行数。
$ head -n 2 文件名
$ tail -n 2 文件名
$ tail -f 文件名  ##实时动态更新最后文本
  1. less

##less和more非常相似,当功能更为强大。less改进了more命令的很多细节,并添加了许多特性。这些特性让less看起来更像是一个文件编辑器,只是去掉了文本编辑功能。总体来说,less命令提供了下面这些增强功能。1、使用光标键在文本文件中前后(甚至左右)滚屏;2、用行号或百分比作为书签浏览文件;3、实现复杂的检索、高亮显示等操作;4、兼容常用的字处理程序(如Vim)的键盘操作;5、阅读到文件结束时less命令不会退出;
$ less 文件名 
$ less -M 文件名 ##使用带-M的less命令可以显示更多的文件信息
  1. grep

##grep 查找文件内容。很多时候,并不需要列出文件的全部内容,用户要做的只是找到包含某些信息的一行。语法:grep [OPTIONS] PATTERN [FILE...]
$ grep un day.txt ##在文件day中查找包含un的行
##如果要查找Red Hat这样的关键词,则必须加单引号以把空格包含进去。grep通过"基础正则表达式base regular expression"进行搜索。和grep相关的一个工具是egrep,除了使用"扩展的正则表达式extended regular exception"更完善的表达方式。
  1. find

##指定范围内查找文件,基本语法:find [OPTION] [path...] [expression]
$ find /usr/bin/ -name zip -print
##find会深入到这个路径的每个子目录中寻找,如果指定"/"就查找整个文件系统。-name选项指定了文件名,-print表示将结果输出到标准输出。find命令还能够指定文件的类型。在Linux中,包括目录和设备都以文件的形式表现,可以使用-type选项来定位特殊文件类型。
$ find /etc/ -name init.d -type d -print
##find命令的-type选项可供使用的参数b 块设备文件、f 普通文件、c 字符设备文件、p 命名管道、d 目录文件、l 符号链接
##find命令还可以通过指定时间查找文件。-atime n用来查找最后一次使用在n天前的文件,-mtime n则用来查找最后一次修改在n天前的文件。但是在实际使用过程中,很少能准确确定n的大小。在这种情况下,可以用+n表示大于n,用-n表示小于n。
  1. locate

##快速定位文件,local没有进入子目录搜索,它是通过检索文件名数据库类确定文件的位置
  1. whereis

##whereis命令主要用于查找程序文件,并提供这个文件的二进制可执行文件、源代码和使用手册页存放的位置
$ whereis find ##查找find命令
$ whereis -b find ##使用-b命令只查找这个程序的二进制可执行文件
  1. who / whoami / uname

##who查看当前系统中登录的用户,以及在那个控制台上
$ who 
##whoami 当前登录用户名
$ whoami
##uname
$ uname -a ##当前操作系统的所有有用信息
$ uname -r ##内核版本
  1. man

##使用man命令获取某一个命令的帮助信息。man命令在显示手册时实际调用的是less程序,所以可以使用less快捷键
$ man man ##查看man命令的帮助信息
  1. whatis / apropos

##man手册有时候显得很啰嗦,whatis从某个程序的使用手册页中抽出一行简单的介绍性文字。
$ whatis man
##aprpoos命令通过使用手册中反查到某个命令。例如,如果用户想要搜索一个文件,而又想不起来应该使用哪个命令的时候,可以求助于apropos
$ apropos create
    • 文件管理

2.1简介

Linux首先建立一个"/"文件系统,并在这个文件系统中建立一系列空目录,然后将其它硬盘分区(如果有的话)中的文件系统挂载到这些目录中。

理论上说,可以为根目录下的每一个目录都单独划分一个硬盘分区,这样跟分区的容量就可以设置的很小(因为几乎所有的东西都存放在其他分区中,跟分区中的目录只是起到了"映射"的作用),不过这对于普通用户而言没有太大必要。

目录

描述

/bin

构建最小系统所需要的命令

/boot

内核与启动文件

/dev

各种设备文件

/etc

系统软件的启动和配置文件

/home

用户的主目录

/lib

C编译器的库

/media

可移动介质的安装点

/opt

可选的应用软件包

/proc

进程的映像

/root

超级用户的主目录

/sbin

和系统操作有关的命令

/tmp

临时文件存放点

/usr

非系统的程序和命令

/var

系统专用的数据和配置文件

2.2文件权限管理

Linux系统准备了3中登录用户权限-文件所有者(属主)、文件属组用户、其他用户。但是root用户除外,上帝般的角色,root用户可以查看、修改、删除所有人的文件,具有控制一台计算机的完整权限。

文件所有者通常是文件的创建者,但是也可以通过root用户中途改变一个文件的属主用户,切记必须直接由root用户来实施。可以(也必须)把文件交给一个组,这个组就是文件的属组,组是一群用户组成的一个集合。

2.2.1权限类型及限制

可以赋予某类用户对文件和目录享有中权限:读取(r)、写入(w)、可执行(x)。

对于文件,拥有读取权限意味着可以打开并查看文件的内容,写入控制对文件的修改权限。而是否能够删除和重命名一个文件则由其父目录的权限设置所可控制的。要让一个文件可执行,必须设置其执行权限。可执行文件有两类,一类是可以直接由CPU执行的二进制代码,另一类是Shell脚本程序。

对于目录,执行权限控制了用户能否进入该目录,读取权限确认能否列出该目录中的内容,写入权限控制这在目录中创建、删除和重命名文件。因此目录的执行权限是最基本的权限。

2.2.2文件权限相关命令

  1. ls

$ ls -l ##与ll相同,查看一个文件的属性,包括权限,不包括隐藏的文件
$ ls -ld t/ ##查看一个目录的属性
  1. chown / chgrp

##chown命令用于改变文件的所有权(change owner),基本语法是chown [OPTION]... [OWNER][[:GROUP]] FILE...。这条命令将文件FILE的属主改为OWNEr,属组改为GROUP
$ sudo chown lewis:root days ##将文件days的属主改为lewis,而把其属组改为root组。
$ sudo chown guest days ##如果只需要更改文件属主,则可以省略参数":GROUP"
$ sudo chown :nogroup days ##如果只需要改文件属组,则可以省略"OWNER",但是不能省略GROUP前":"
$ sudo chown -R lewis iso/ ##改变一个目录及其下所有文件和子目录

##chgrp命令用于设置文件的属组
$ sudo chgrp nogroup days
$ sudo chgrp nogroup days/  ##递归
  1. chmod

##chmod命令改变文件权限(change mode)。这个命令使用"用户组"+/-权限"的表达方式来增加/删除相应的权限。用户组包括了文件属主(u)、文件属组(g)、其他人(o)和所有人(a),而权限包括了读取(r)、写入(w)和执行(x)。切记只有文件的属主和root用户才有权修改文件的权限。
$ chmod u+x days ##对days文件增加了属主的执行权限
$ chmod a-x days ##同时对3种类型用户删除
$ chmod ug=rw,o=r days ##也可以通过"用户组=权限"的规则直接设置文件权限
$ chmod o=u ##也可通过"用户组1=用户2"将用户组1与用户组2权限设定为完全相同
$ chmod 711 days ##利用八进制语法设置文件权限,详细见下表

八进制

二进制

权限

0

000

---

1

001

--x

2

010

-w-

3

011

-wx

4

100

r--

5

101

r-x

6

110

rw-

7

111

rwx

备注:在实际使用中1代表x,2代表w,4代表r

2.3文件类型

Linux的一切都被表示成文件的形式。包括程序进程、硬件设备、通信通道、内核数据等。Linux中一共有7种文件类型。

文件类型

符号

文件类型

符号

普通文件

-

本地域套接口

s

目录

d

有名管道

p

字符设备文件

c

符号链接

l

块设备文件

b

2.3.1链接ln

##in建立链接。又分为符号链接(软连接)、硬链接。

##软连接
$ ln -s target link_name ##创建软连接
$ ln -s days my_days ##建立一个名为my_days的符号链接指向文本文件days。访问my_days就相当于访问days。my_days只是一个days的一个"别名",因此删除my_days并不会影响到days。但如果把days删除了,那么my_days虽然还保留在那里,但已经没有意义了。
$ ln -s /usr/local/share/  loacal_share  ##软连接还可以作用目录

##硬链接,这种链接用于将两个独立的文件联系在一次。硬链接和符号链接的本质不同在于:硬链接是直接引用,而符号链接是通过名称进行引用。使用不带选项的ln命令建立硬连链接。硬链接的作用允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止"误删"。
$ in days hard_days ##

2.3.2输入输出重定向和管道

1.输出重定向:>/>>

程序在默认情况下输出结果的地方被称为标准输出(stdout)。通常,标准输出总是指向显示器。

$ ls ##ls执行后将会将文件详细信息输出到显示器中
$ ls > ~/ls_out.txt ##这个命令ls输出就不会再显示器上显示,而是出现在用户主目录的ls_out.txt文件中。如果ls_out.txt文件不存在,那么输出重定向符号">"会试图建立这个文件。如果ls_out.txt文件已经存在,那么">"会删除文件中原油的内容,然后用新内容替代
$ ls >> ~/ls_out.txt ##如果要保留原来的文件中的内容,则需要使用重定向符号">>"。

2.输入重定向:<\<<

程序默认情况下接收输入的地方被称为标准输入(stdin)。通常来说,标准输入总是指向键盘。

$ cat ##如果使用不带任何参数的cat命令,那么cat会停在那里,等待从标准输入(也就是键盘)获取数据。用户的每一行输入会立即显示在屏幕上,直到使用Ctrl+D提供给cat命令一个文件结束符。
$ cat < days  ##通过使用输入重定向符号"<"可以让程序从一个文件中获取输入。
$ cat << EOF ##立即文档(here document),这种重定向方式使用操作符"<<"。立即文档明确告诉Shell从键盘接受输入,并传递给程序。
$ cat << END > hello ##首先让cat命令以立即文档的方式获取输入,然后再把cat的输出重定向到hello文件。

3.管道:|

管道将"重定向"再向前推进了一步。通过一根竖线"|",将一条命令的输出连接到另一条命令输入。

$ ls | grep ay

2.4文件操作相关命令

  1. mkdir

##mkdir命令可以一次建立一个或多个目录
$ cd~  ##进入用户主目录
$ mkdir document picture ##新建两个目录
$ mkdir ~/picutre/temp ##可以使用绝对路径来新建目录
$ mkdir ~/tempx/job ##无法创建目录,因为没有~/tempx该文件或目录,自然也无法在tempx下创建job目录了
$ mkdir -p ~/tempx/job ##用户完整创建一个子目录结构
  1. touch

##建立一个空文件,touch命令的另一个用途是更新一个文件的建立日期和时间,每次执行都会更新建立的日期与时间。touch命令的这个功能在自动备份和整理文件时非常有用,这使得程序可以决定那些文件已经被备份或整理过了。
$ touch hello.txt
  1. mv

##移动或重命名,move
$ mv hello bin/ ##将hello文件移动到bin目录下,如果bin目录下有一个hello目录,则不会有任何提示直接覆盖掉
$ mv -i hello bin/ ##存在相同的文件,则会提示是否替换
$ mv -b hello bin/ ##这个选项用一种不同的方式处理自动替换。在移动文件前,首先咋目标目录的同名文件名后加一个"~",从而避免这个文件被覆盖
##Linux没有"重命名"这个命令,因为没必要,重命名就是将一个文件在同一个目录中移动
  1. cp

##cp命令用来复制文件和目录
$ cp test.php test/ ##和mv命令相同,cp默认情况下会覆盖目录中的同名文件,可以使用-i或-b处理
$ cp -i test.php test/
$ cp -b test.php test/
##cp命令在执行复制任务的时候会自动跳过目录,为此,可以使用-r选项。这个选项将子目录连同其中的文件一起复制到另一个子目录下
  1. rmdit/rm

##rmdir命令用于删除目录,且只能删除空目录
$ rmdit dit
##rm命令可以一次删除一个或几个文件
$ rm test/*.php ##rm删除时不会做任何提示,通过rm命令删除的文件将永远地从系统中消失了,而不会被放入一个称作"回收站"的临时目录下。一个比较安全的使用rm命令方式是使用-i选项,删除前提示用户。对于只读文件,即便不加上-i选项,rm命令也会提示
$ rm -i test/*.php
$ rm -f hello_bak ##使用-f选项避免交互式操作,rm会自动对这些问题回答y
$ rm -r photos/ ##使用-r选项rm命令会递归地删除目录下所有的文件和子目录

2.5存档及压缩工具

  1. gzip

##压缩减压工具
$ gzip linux_book_bak.tar ##在默认情况下gzip命令会给被压缩的文件加上一个"gz"扩展名。".tar.gz可能是Linux中最流行的文件格式。这种格式的文件是首先经过tar打包程序的处理,然后用gzip压缩的成功"
$ gzip -d linux_book_bak.tar.gz ##解压.gz文件
$ gunzip linux_book_bak.tar.gz ##解压.gz文件与上边gzip -d 相同
##应该保证需要解压的文件有合适的扩展名。gzip或者(gunzip)支持的扩展名有.gz,.Z,-gz,.z,-z和z
$gzip -l Linux_book_bak.tar.gz ##-lx选项用于查看压缩效果,文件的大小以字节为单位
$gzip -tv linux_book_bak.tar.gz ##与-t选项功能相同,唯一区别是减压后有提示与反馈
  1. bzip2

##压缩减压工具,比gzip效率更高
$ bzip2 linux_book_bak.tar ##压缩tar,后缀名多了".bz2"
$ bunzip2 linux_book_bak.tar.bz2 ##减压
$ bzip2 -d linux_book_bak.tar.bz2 ##减压
##bzip2可以识别的压缩文件格式包括.bz2,.bz,.tbz2,.tbz,bzip2。如果使用bzip2压缩的文件被改成了其它名字,那么经过减压的文件名后边会多出一个".out"作为扩展名。
##bzip2 -tv  linux_book_bak.tar.bz2 ##-tv选项检查压缩文件的完整性
  1. tar

##打包工具:读取多个文件和目录,并将它们打包成一个文件
$ tar -cvf shell.tar shell/ ##应用到了3个选项,c指导tar创建归档文件,v用于显示命令的执行过程,f则用于指定归档文件的文件名,在这里把它设置为"shell.tar"。最后一个(或几个)参数指定了需要打包的文件和目录,且tar不会删除原来的文件。
$ tar -xvf ##解开归档文件
$ tar -cvwf shell.tar shell/ ##-w选项用于每次将单个文件进入(或者抽出)归档文件时征求用户的意见
$ tar -xvwf shell.tar  ##抽出时征求用户意见
$ tar -czvf ##-z选项的tar命令会自动调用gzip程序完成相关操作。这条命令相当于下面两条命令的组合:
$ tar -cvf shell.tar shell/
$ gzip shell.tar
$ tar -xzf ##相同,这个相当于先解压或解开归档
    • 用户及用户组管理

  1. useradd

$ sudo useradd -m john ##添加一个用户John用户,并自动建立主目录
##在默认情况下,不带-m参数的useradd命令不会为新用户建立主目录。在这种情况下,用户可以登录到系统的shell,但不能够登录到图形界面。这是因为桌面环境无论是KDE还是GNOME,需要用到用户主目录中的一些配置文件。
$ sudo useradd -g users mike ##创建用户并指定一个组,在新建用户的时候用户单独创建一个同名的用户组,然后把用户组归入这个组中,这正是不带-g参数的useradd命令的默认行为
$ sudo useradd -s /bin/bash mike ##-s参数用于指定用户登录后所使用的Shell。常用的有BASH,TCSH,ZSH(Z-Shell),SH(Bourne Shell)等。如果不指定-s参数,那么默认将使用sh(在大部分系统中),这是指向BASH的符号链接登录系统
  1. passwd

$ sudo passwd john ##更改John的登录密码
##所有的用户信息都登录在/etc/passwd文件中,/etc/shadow文件保存着用户的登录密码
##在早起Linux中,/etc/passwd是管理用户的唯一场所,包括用户口令在内的所有信息都记录在这个文件中。出于安全考虑,现在用户口令已经转而保存在/etc/shadow中。
##ubuntu:x:1000:1000:qcloud:/home/ubuntu:/bin/bash
##/etc/passwd文件每一行由7个字段组成,字符间使用冒号分割,登录名:口令占位符:用户ID号(UID):默认组(GID):用户的私人信息(包括全名、办公室、工作电话、家庭电话等):用户主目录:登录Shell。

##1.加密的口令:在passwd的口令字段汇总, 只有一个x占位符。绝大多数系统都将用户口令经过加密后存放在/etc/shadow中(这个文件只对root可读)。大部分Linux发行版可以识别多种不同的加密算法,通过分析加密后的数据,系统可以知道使用的是哪一种算法,因此,可以在一套系统上使用多种不同的加密方式。目前Linux上使用最广泛的加密算法是MD5.MD5可以对任何长度的口令进行加密,并且不会产生损失,经过MD5加密之后的长度是一个固定值(34个字符)。在加密过程中,MD5算法会随机加入一些被称作"盐(salt)"的数据,从而是一个口令可以对应多个不同的加密后的形式。从而使用同一个口令对应多个不同的加密后的形式。常用的加密算法总能够通过前缀来识别。MD5算法总是以"$1$"开头,另一种常用的加密算法Blowfish以"$2a$"开头。

##2.UID号:UID号用于唯一标识系统中的用户,这时一个32位无符号整数。Linux规定root用户的UID为0。而其他一些虚拟用户如bin、daemon等被分配到一些比较小的UID号,而真实用户从一个比较大的数开始,这样能为虚拟用户提供足够的余地。应该保证每个用户UID号的唯一性,如果多个用户共有一个UID,那么系统将会产生安全隐患,如果出现这样将会有相同的权限。

##3.GID号:GID号用于在用户登录时指定其默认所在的组,与UID号一样,这是一个32位整数,组在/etc/group文件中定义,其中root组的GID号为0。在确定一个用户对某个文件是否具有访问权限时,系统会考虑这个用户所在的所有组(在/etc/group文件中定义)。默认组ID只有在用户创建文件和目录时才有用

##/etc/shadow文件:/etc/passwd文件类似,每一行代表一个用户,并以冒号分隔每一个字段。其中,只有用户名和口令字段是要求非空的,例如:
##ubuntu:$1$eFiLQXHS$1puvkQeRpSocRrwo0K3MX0:19367:0:99999:7:::9:7:
##以下是各个字段的含义:
##1.登录名
##2.加密后的口令
##3.上次修改口令的日期
##4.两次修改口令之间的天数(最少)
##5.两次修改口令之间的天数(最多)
##6.提前多少天提醒用户修改口令
##7.在口令过期多少天后禁用该账号
##8.账号过期日期
##9.保留,目前为空

$ sudo usermod -e 12/31/2023   ##设置过期日期

##/etc/group:该文件中保存有系统中所有组的名称,以及每个组中的成员列表。文件中每一行表示一个组,有4个冒号分割的字段组成,例如
##lighthouse:x:1001:lighthouse
##以下是各个字段的含义:
##1.组名
##2.组口令占位符,在/etc/gshadow文件用于放组口令
##3.组ID(GID)号
##4.成员列表,用逗号分开(不能加空格)
##如果一个用户属于/etc/passwd中所指定的某个组,但没有出现在/etc/group文件相应的组中,那么应该以/etc/passwd文件中的设置为准。
  1. groupadd

$ sudo groupadd newgroup ##系统中添加一个组
  1. history

$ history ##查询用户操作,history命令仅在BASH中使用。history会列出所有使用过的命令并加以编号,这些信息被存储在用户主目录.bash_history文件中,这个文件默认情况下可以存储1000条命令记录。
$ history 10 ##列出最近使用的10条命令
  1. userdel

$ sudo userdel mike ##删除mike用户。默认情况下,userdel并不会删除用户的主目录,除非使用了-r选项
$ sudo userdel -r mike ##删除用户,同时删除主目录,同时释放硬盘空间,删除时小心;
  1. usermod

##使用usermod命令来修改已有的用户账号,usermod也通过修改/etc/passed、/etc/shadow、/etc/group这三个文件来实现用户属性的设置。
$ sudo usermod -l mike -d /home/mike -e 12/32/13 john ##-d修改用户主目录,-e修改账户的有效期限(MM/DD/YY),-g修改用户所属的组,-l修改用户账号名称,-s修改用户登录后所使用的Shell
  1. id

##查看用户信息
$ id nobody ##id命令用于查看用户的UID、GID及其所属的组。这个命令以用户名作为参数
$ id ##不带参数,则显示当前登录的用户信息
  1. su

##用户见切换
$ su john 
$ exit ##通过exit命令回到之前的账号
    • 进程管理

4.1概念

在Linux的内核中,维护着一张表,这张表记录了当前系统中运行的所有进程的各种信息。Linux内核会自动完成对进程的控制和调度。内核中一些重要的进程信息如下:进程的内存地址、进程当前的状态、进程正在使用的资源、进程的优先级、进程的属主。以下是常见的属性:

  1. PID:进程的唯一ID号

  1. PPID:父进程的PID

  1. UID和EUID:真实和有效的用户ID,只有进程的创建者和root用户才有权对该进程操作,UID便是属主。EUID被称为"有效的用户ID号",这个特殊的UID号用来确定进程对某些资源和文件的访问权限,在绝大数情况下,进程的UID和EUID是一样的,除了setuid程序(setuid好神奇,可以自己了解)。

  1. GID和EGID:真实和有效的组ID,类似EUID,EGID也是可以通过setgid程序来设置。

  1. 谦让度和优先级:进程的优先级决定了其收到CPU"优待"的程度

4.2命令

1.ps

$ ps aux  ##显示当前系统上运行的所有进程的信息
##USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
##root           1  0.0  0.6 101960 13104 ?        Ss   Jan10   0:20 /sbin/init
##1.USER:进程创建者的用户名
##2.PID:进程的ID号
##3.%CPU:进程占用CPU百分比
##4.%MEM:进程占用的内存百分比
##5.VSZ:进程占用的虚拟内存大小
##6.RSS:内存中页的数量(页是管理内存的单位,在PC上通常为4K)
##7.TTY:进程所在终端的ID号
##8.STAT:进程状态,R-正在运行/可运行;D-睡眠中(不可非唤醒,通常是在等待I/O设备);S-睡眠中(可以被唤醒);T-停止(由于收到信号或被跟踪);Z-僵进程(已经结束而没有释放系统资源的进程);常用的附加标志有:<-进程拥有比普通优先级高的优先级;N-进程拥有比普通优先级低的优先级;L-有些页面被锁在内存中;s-会话的先导进程
##9.START:进程启动的时间
##10.TIME:进程已经占用的CPU时间
##11.COMMAND:命令和参数

$ ps lax ##lax可以提供父进程ID(PPID)和谦让度(NI)

2.top

##即时跟踪进程信息,ps命令可以一次性给出当前系统中进程信息的快照,但这样的信息缺乏时效性。
$ top ##top命令,默认10s更新一次,那些CPU占用最多的程序会排在最前面,使用命令q退出

3.lsof

##查看占用文件的进程:管理员想要知道某个特定的文件正被那些进程使用。lsof命令能够提供包括PID在内的各种进程信息
$ lsof ##不带任何参数的lsof命令会列出当前系统中所有打开文件的进程信息,要找出占用某个特定文件的进程,需要提供文件作为参数
$ lsof database.doc  ##查询使用database.doc文件的进程相关信息

4.kill

##从本质上讲,kill命令只是用来向进程发送一个信号,至于这个信号是什么,则是有用户指定的。语法:
## kill [-signal] pid
##Linux定义了几十种不同类型的信号,可以使用kill -l命令显示所有信号及其编号。根据硬件体系机构不同,有可能显示不同。下面列出常用的:
##0 -- EXIT,程序退出时收到该信号,
##1 -- HUO,挂起
##2 -- INT,中断
##3 -- QUIT,退出
##9 -- KILL,杀死
##11 -- SEGV,段错误
##15 -- TERM,软件终止

##信号名的前缀SIG是可以省略的。在默认情况下,kill命令向进程发送TERM信号,这个信号表示请求种种某项操作。
$ kill -TERM 12974   ##与kill 12974相同
$ kill -SIGTERM 12974 ##与kill -TERM 12974相同

##使用kill命令是否一定可以终止一个进程?答案是否定的。既然kill命令向程序“发送”一个信号,那么这个信号就应该能够被程序“捕捉”。程序可以“封锁”或者干脆“忽略”捕捉到的信号。只有在信号没有被程序捕捉的情况下,系统才会执行默认操作。
Linux中,快捷键Ctrl+C对应于信号INT。
## trap "" TERM ##SHELL脚本中出现这一行,则表示忽略TERM信号
##在Linux中,有一个信号永远不能被程序所捕捉,这个就是KILL信号。KILL可以在内核级别“杀死”一个进程,在绝大多数情况下,下面命令可以确保结束进程:
$ sudo kill -KILL pid
$ sudo kill -SIGKILL pid
$ sudo kill -9 pid ##以上三条命令作用相同
##然而,有一些进程的生命力KILL信号都不能影响到它,这种情况常常是由一些退化的I/O虚假锁造成的,此时,重启系统是解决问题的唯一办法。

5.nice / renice

##nice命令:在启动程序时设置其谦让度。谦让度的值应该在-20 ~ +19之间浮动。越高的谦让度,获取CPU时间越低。nice命令通过接受一个-n参数增加程序额谦让度值
$ nice -n 2 bc
$ nice bc ##不带-n参数的nice命令会将程序的谦让度增量设置为10

##renice命令:在进程运行时调整其谦让度值。
$ renice +12 -p 8567 ##-p选项指定进程的PID

##nice命令将-n参数后边的数值加上默认谦让度,作为程序的谦让度值。也就是说,nice命令调整的是“相对”谦让度值。renice是调整“绝对”谦让度值。通常来说,程序的默认谦让度值总是0。如果用户不采取任何行动,那么新进程将从其父进程那里继承谦让度。进程的属主可以提供其谦让度,但不能降低其谦让度。这种限制保证了低优先级的进程不会派生出高优先级的子进程。但是root用户可以任意设置进程的优先级。

4.3/PROC文件系统

/PROC是一个非常特殊的文件系统,该目录下存放着内核有关系状态的各种有意义的信息。在系统运行的时候,内核会随时想这个目录写入数据。ps和top命令就是从这个地方读取数据的。这时操作系统向用户提供的一条通往内核的通道,用户甚至可以通过想/proc目录下的文件写入数据来修改操作系统参数。如果使用ls命令查看目录,会看到好多以数据命名的目录存放着以该数字为PID的进程的信息。另一些文件则代表了不同的含义,如stat文件包含了进程的状态信息,ps命令通过读取这个文件向用户提供输出。

    • 网络配置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值