Linux常用命令

491 阅读18分钟

常用命令

ls

ls 命令用于显示指定工作目录下内容(列出目前工作目录下所含文件及子目录)

  • ls -a : 列出当前目录下的所有文件,包括以.头的隐含文件
  • ls -l或ll : 列出当前目录下文件的详细信息
  • ls [0-9] : 显示包含数字的文件名和目录名

pwd

  • pwd 命令用于显示工作目录
  • pwd : 查看当前所在目录的绝对路径

cd

cd 命令用于切换当前工作目录至dirName 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home目录 "~" 也表示为home 目录,"."则是表示目前所在的目录,".."表示目前目录位置的上层目录

  • cd .. : 回当前目录的上级目录

mkdir

mkdir 命令用于建立目录

  • mkdir 目录名 : 创建一个目录
  • mkdir -p test/testing:递归式去创建一些嵌套目录(在当前目录下的test目录中,建立一个名为testing的子目录。若test目录不存在,则建立一个)

rmkdir

rmkidr 命令从一个目录删除一个或多个子目录,删除目录时也必须具有对其父目录的写权限 注意:不能删除非空目录

rm

rm 命令用于删除一个文件或目录

  1. 参数
  • -i : 删除已有文件或目录之前先询问用户
  • -r : 递归处理,将制定目录下的所有文件与子目录一并处理
  • -f : 强制删除文件或目录
  • rm 文件名 文件名 : 删除一个 文件或多个文件
  • rm -rf 非空目录名 :递归删除一个非空目录下的一切
  • rm -r * : 删除当前目录下的所有文件及子目录
  • 删除文件可以直接使用rm 命令,若删除目录则必须配合选项"-r"

cat

cat 命令用于连接文件并打印到标准输出设备上 cat 主要有三大功能:

  1. 一次显示整个文件

$ cat fileName

  1. 从键盘创建一个文件

$ cat > fileName : 只能创建新文件,不能编辑已有文件

  1. 将几个文件合并为一个文件

$ cat file1 file2 > file

  1. 常用参数
  • -b 对非空输出行号
  • -n 输出所有行号
  1. 实例
  • 把log1.log的文件内容加上行号后输入long2.long这个文件里

cat -n log1.log log2.log

  • 把log1.log、log2.log和log3.log的文件内容加上行号(空白含不加)之后的内容附加到log.log里

cat -b log1.log log2.log log3.log log.log\

  • 使用here doc生成新文件
cat >log.txt <<EOF
>Hello
>World
>PWD = $(pwd)
>EOF
$ ls -l log.txt
$ cat log.txt
Hello
World
PWD=当前工作目录绝对路径
  • 反向展示

tac log.txt

more

more 命令类功能似于 cat,more 会以一页一页的显示,方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按back键就会往回一页显示

  1. 参数命令
  • +n : 从第n行开始显示
  • -n : 一次显示的行数
  • -s : 当遇到连续两行以上的空白行,就代换为一行的空白行
  1. 常用操作命令
  • Enter : 向下n行,需要定义。默认为1行
  • 空格键 : 向下滚动一屏
  • Ctrl+b : 返回上一屏
  • !命令 : 调用Shell,并执行命令
  • q : 退出more
  1. 实例
  • 显示文件中从第3行起的内容

$ more +3 Example.txt

  • 在所列出文件目录详细信息,借助管道使每次显示5行

$ ls -l | more -5

less

less与more 类似,但使用less可以随意浏览文件,而more 仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件

  1. 常用命令
  • -i : 忽略搜索时的大小写
  • -b : 设置缓冲区的大小
  • -e : 当文件显示结束后,自动离开
  1. 实例
  • 查看文件

less log1.log

  • ps查看进程信息并通过less分页显示

ps -ef | less

  • 查看命令历史使用记录并通过less分页显示

history | less

  • 浏览多个文件

less log1.log log2.log

head

head命令用来将一个或多个文件或管道数据的第一行(默认为10行)打印到标准输出中,该命令正好和tail命令互补

  1. 常用参数
  • -n : 显示行数
  1. 实例
  • 显示1.log文件中前20行

head -n 20 1.log

  • 显示1.log文件中前20字符

head -c 20 1.log

  • 显示1.log最后的5到10行

tail -n 10 1.log | head -n 5

tail

tail 命令用于查看日志文件

  1. 常用参数:
  • -f : 循环读取(常用于查看递增的日志文件)
  • -n : 显示
  1. 实例
  • 读取日志文件

ping 127.0.0.1 > ping.log & (后台运行:可使用jobs -l查看,也可使用fg将其移动到前台运行) 执行此命令后在当前目录下生成日志文件ping.log tail -f ping.log

mv

mv 命令用来移动或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命名该文件) 当第二参数为目录时,可将多个文件空格分割作为第一参数,移动多个文件到参数2指定的目录中

  1. 实例 (1) 将文件test.log重命名为test.txt mv test.log test.txt (2) 将文件log1.txt,log2.txt,log3.txt移动到根test3目录中 mv log1.txt log2.txt log3.txt /test3 (3) 将文件test.log 改名为file.log,如果file已存在,则询问是否覆盖 mv -i test.log file.log (4) 移动当前文件夹下的所有文件到上一级目录 mv * ../

cp

cp 命令主要用于复制文件或目录

  1. 语法: cp [option] source dest 或 cp [option] source ... directory
  2. 参数说明 -a : 此选项通常在复制目录时使用,它保留连接、文件属性、并复制目录下的所有内容。其作用等于dpr参数组合 -d : 复制时保留连接。 -f : 覆盖已存在的目标文件而不给出提示 -i : 与选项-f相反,在覆盖已存在目标文件前给出提示,要求用户确认是否覆盖,回答“y”时目标文件将被覆盖 -p : 除复制文件的内容,还把修改时间和访问权限也复制到新文件中 -r : 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件 -l : 不复制文件,只是生成链接文件
  3. 实例 (1) 复制a.txt到testing目录下,保持原文件时间,如果原文件存在提示是否覆盖 cp -ai a.txt test (2) 为a.txt建议一个链接 cp -l a.txt link_a.txt (3) 将当前目录"test/"下的所有文件复制到新目录“newtest”下 cp -r test/ newtest

scp

scp 命令用于linux之间复制文件和目录 scp 是linux系统下基于ssh登陆进行安全的远程文件拷贝命令 scp 是加密的,rcp是不加密的,scp是rcp的加强版

  1. 语法 scp [可选参数] file_source file_target
  2. 参数说明 -1 : 强制scp命令使用协议 ssh1 -2 : 强制scp命令使用协议 ssh2 -4 : 强制scp命令只使用IPv4寻址 -6 : 强制scp命令只使用IPv6寻址 -B : 使用批处理模式 -C : 允许压缩 -p : 保留原文件的修改时间,访问时间和权限 -q : 不显示传输进度条 -r : 递归复制整个目录
  3. 实例 (1) 从本地复制到远程 命令格式: scp local_file remore_username@remote_folder 或者 scp loacl_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file 指定用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名称不变,第二个指定了文件名 3,4 个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名不变,第4个指定了文件名 应用实例: scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/other/music scp /home/space/music/1/mp3 root@www.rumoob.com:/home/root/other/music/001.mp3 scp /home/space/music/1/mp3 www.rumoob.com:/home/root/other/music scp /home/space/music/1/mp3 www.rumoob.com:/home/root/other/music/001.mp3 复制目录命令格式: scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r remote_ip:remote_folder 应用实例: scp -r /home root@www.runoob.com:/home scp -r www.runoob.com:/home (2) 从远程复制到本地 从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例 scp root@www.runoob.com:/home /home/1.mp3 scp www.runoob.com:/home /home (3) 如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用-P参数来设置命令的端口号,命令格式如下: #scp 命令使用端口号4588 scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator 注意:使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的

which

在linux要查找某个文件,但不知道放在那里了,可以使用下面的一些命令来搜索: which 查找可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称

which是在PATH就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

  1. 常用参数
  • 查看ls命令是否存在,执行那个

which ls

  • 查看which

which which

  • 查看cd

which cd

whereis

whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(-b)、man说明文件(-m)和源代码文件(-s)。如果省略参数,则返回所有信息。whereis及locate都是基于系统内建的数据库搜索,因此效率很高,而find则是遍历硬盘查找文件。

  1. 常用参数:
  • -b : 定位可执行文件
  • -m : 定位帮助文件
  • -s : 定位源代码文件
  • -u : 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件
  1. 实例
  • 查找locate程序相关文件

whereis locate

  • 查找locate的源码文件

whereis -s locate

  • 查找locate的帮助文件

whereis -m locate

locate

locate 通过搜寻系统内建文档数据库达到快速找到档案,数据库由updatedb程序来更新,upatedb是由cron daemon周期性调用的。默认情况下locate命令在搜寻数据库时比在由整个硬盘进行资料搜寻快,但较差劲的是locate所找到的档案若是最近才建立或刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。locate与find命令相似,可以使用如*、?等进行正则匹配查找

  1. 常用参数 -l : 要显示的行数 -f : 将特定的档案系统排除在外,如将proc排除在外 -r : 使用正则运算式作为查询条件
  2. 实例
  • 查找和pwd相关的素有文件

locate pwd

  • 搜索etc目录下所有以sh开头的文件

locate etc/sh

  • 查找/var目录下,以reason结尾的文件

locate -r '^/var.*reason$'

find

find 命令用于在文件树中查找文件,并作出相应的处理

  1. 命令格式
  • find pathname -options [-print -exec -ok ...]
  1. 参数命令
  • pathname : find命令所查找的目录路径。例如用.表示当前目录,用/来表示系统根目录。
  • -print : find命令将匹配的文件输出到标准输出
  • -exec : find命令对匹配的文件执行该参数所给出的shell命令。 相应命令的形式为'command'{};,,注意{}和;之间的空格。
  • -ok : 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
  1. 命令选项
  • -name : 按照文件名查找文件
  • -perm : 按文件权限查文件
  • -user : 那文件属主查找文件
  • group : 按文件所属组来查找文件
  • -type : 查找某一类型的文件,诸如: b - 块设备文件、d - 目录、c - 字符设备文件、 l - 符号链接文件、p - 管道文件、f - 普通文件
  • -sise n:[c]: 查找文件长度为n块文件,带由c时表文件字节大小
  • -amin n : 查找系统中最后n*24小时访问的文件
  • -cimn n : 查找系统中最后N分钟被改变文件状态的文件
  • ctime n : 查找系统中最后n*24小时被改变文件状态的文件
  • -mmin n :查找系统中最后N分钟被改变文件数据的文件
    • mtime n : 查找系统中最后n*24小时被改变文件数据的文件(用减号来限定更改时间在距今n日以内的文件,而用加号来限定更改时间在距今n日以前的文件)
  • -maxdepth n : 最大查找目录深度
  • -prune : 选项来指出需要忽略的目录
  1. 实例
  • 查找48小时内修改过的文件

find -mtime -2

  • 在当前目录查找以.log结尾的文件

find ./ -name '*.log'

  • 查找/opt目录下权限为777的文件

find /opt -prem 777

  1. -exec 参数后面面跟的时command命令,它的终止是以";"结束标志的,所以这句命令后面的分号是不可缺少,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{}括号代表前面find查找出来的文件名。
  2. 实例
  • 在当前目录中查找更改时间在10日以前的文件并删除它们
  • find .-type f -mtime +10 -exec rm -f{} ;
  • 在当前目录中查找所有文件名以.log 结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。按y键删除文件,按n键不删除

find .-name '*.log' -mtime +5 -ok -exec rm {} ;

  • 当前目录下查找文件名以passwd开头,内容包含"pkg"字符的文件

find . -name 'passwd*' -exec grep 'pkg'{} ;

  • 用exec选项执行cp命令

find . -nanme '.log' -exec cp {} test3 ;

  1. -xargs find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以下处理最先获取的一部分文件,然后是下一批,并如此继续下去
  2. 实例
  • 查找当前目录下每个普通该文件,然后使用xargs来判断文件类型

find .-type f -print |xargs file

chmod

Linux的文件调用权限分为三级:文件拥有者于者、群组、其他。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中的其他用户的读、写和执行权限。

以文件ping.log 为例:

-rwxr--r-- 1 root 50k 11-13 06:03 ping.log 第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是“-”横线,表示是一个非目录文件,如果是d,表示是一个目录文件。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示3组用户对文件或者目录的权限。权限字符用“-”横线代表空许可,r代表只读,w代表写,x代表可执行。

  1. 常用参数
  • -c : 当发生改变时,报告处理信息
  • -R : 处理指定目录以及其子目录下所有文件
  1. 权限范围
  • u : 目录或文件的当前的用户
  • g : 目录或者文件的当前的群组
  • O : 除了目录或者文件的当前用户或者群组之外的用户或者群组
  • a : 所有的用户及群组
  1. 权限代号:、
  • r : 读权限,用数组4表示
  • w : 写权限,用数组2表示
  • x : 执行权限,用数字1表示
    • : 表示增加权限
  • = : 表示唯一设定权限
    • : 删除权限,用数字0表示
  • s : 特殊权限
  1. 实例
  • 增减文件ping.log 所有用户可执行权限

chmod a+x ping.log

  • 撤销原来所有的权限,然后使拥有者具有可读写权限,并输出处理信息

chmod u=r ping.log -c

  • 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限

chmod 751 ping.log 或者 chmod u=rwx,g=rx,o=x ping.log

  • 将test目录及其子目录所有文件添加可读权限

chmod u+r,g+r,o+r -R test/ -c

注意:若用chmod 4755 filename 可使此程序具有root的权限

chown

chown 命令指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符

  • -c : 显示更改的部分的信息
  • R : 处理指定目录及子目录
  1. 实例
  • 改变拥有者和群组 并显示改变信息

chown -c mail:mail 1og.log

  • 改变文件群组

chown -c :mail log.log

  • 改变文件夹即子文件目录属主即属组为mail

chown -cR mail:mail test/

df

df命令用来显示磁盘空间使用情况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以1KB为单位进行显示,除非环境变量POSIXL_CORRECT被指定,那样将以512字节为单位进行显示

  1. 参数
  • -a : 全部文件系统列表
  • -h : 以方便阅读的方式显示信息
  • -i : 显示inode信息
  • -k : 区块为1024字节
  • -l : 只显示本地磁盘
  • -T : 列出文件系统类型
  1. 实例
  • 显示磁盘使用情况

df -l

  • 以易阅读方式列出所有文件系统及其类型

df -haT

  • 显示文件系统的磁盘使用情况统计

df

du

du命令也是查看使用空间,但是与df命令不同的是linux du命令是对文件和目录磁盘使用的空间的查看。

  1. 命令格式
  • du [选项][文件]
  1. 常用参数
  • -a : 显示目录中所有文件大小
  • -k : 以kb为单位显示文件大小
  • -m : 以mb为单位显示文件大小
  • -g : 以gb为单位显示文件大小
  • -h : 以易阅读方式显示是文件大小
  • -s : 仅显示总计
  • -c : 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
  1. 实例
  • 以易阅读方式显示文件夹内及子文件夹大小

du -h scf/

  • 以易阅读方式显示文件夹内所有文件大小

du -ah scf/

  • 显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和

du -hc test/ scf

  • 输出当前目录下各个子目录所使用的空间

du -hc --max-depth=1 scf

fdisk

fdisk 是linux的磁盘分区表操作工具

  1. 语法 fdisk [-l] 装置名称
  2. 参数
  • -l : 输出后面接的装置所有的分区内容。若仅有fdisk -l时,则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

mkfs

磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用mkfs命令

  1. mkfs [-t] 装置文件名
  2. 实例
  • 查看mkfs支持的文件格式

mkfs [tab][tab] 按下两个tab,就会发现mkfs支持的

  • 将分区/dev/hdc6格式化为ext3文件系统

mkfs -t ext3 /dev/hdc6

fsck

fsck 磁盘检验,用来检查和维护不一致的文件系统。若系统掉电或磁盘放生问题,可利用fsck命令对文件系统进行检查

mount/umount

Liunx的磁盘挂载使用mount命令,卸载使用umount命令

ln

ln 功能是为文件在另外一个位置建立一个同步的链接,当在不同目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接它就可以,不必重复的占用磁盘空间

  1. 语法
  • ln [参数][源文件][目标文件或目录]
  1. 命令功能 Linux 文件系统中,有所谓的链接,我们可以将其视为档案的别名,而链接有可以分为两种:硬链接和软链接,硬链接的意思是一个档案可以有多个名称,而软连接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
  2. 软链接
  • 软链接,以路径的形式存在。类似与Windows操作系统中的快捷方式
  • 软链接可以跨文件系统,硬链接不可以
  • 软链接可以对一个不存在的文件名进行链接
  • 软连接可以多目录进行链接
  1. 硬链接
  • 硬链接,以文件副本的形式存在。但不占用实际空间
  • 不允许给目录创建硬链接
  • 硬链接只有在同一个文件系统中才能创建
  1. 命令参数
  • -b : 删除,覆盖以前建立的链接
  • -d : 允许超级用户制作目录的硬链接
  • -f : 强制执行
  • -i : 交互模式,文件存在则提示用户是否覆盖
  • -n : 把符号链接视为一般目录
  • -s : 软连接(符号链接)
  • -v :显示详细的处理过程
  1. 实例
  • 给文件创建软链接,为log1.log文件创建软链接link2020,如果log1.log丢失,link2020将失效

ln -s log1.log link2020

  • 给文件创建硬链接,为log1.log创建ln2020,log1.log和ln2020的各项属性相同

ln log1.log ln2020

  • 给目录创建软链接

ln -s /opt/soft/test/test3 /opt/soft/test/test5

date

date 命令用于显示或设定系统的日期与时间

  1. 命令参数
  • -d<字符串> : 显示字符串所指的日期与时间。字符串前后必须加上双引号
  • -s<字符串> : 根据字符串来设置日期与时间。字符串前后必须加上双引号
  • -u : 显示GMT
  • %H : 小时(00-23)
  • %l :小时(00-12)
  • %M : 分钟(00-59)
  • %s : 总秒数。起算时间为1970-01-01 00:00:00UTC
  • %S : 秒(以本地的惯用法来表示)
  • %a : 星期的缩写
  • %d : 日期(01-31)
  • %m : 月份
  • %y : 年份(00-99)
  • %Y : 年份(以四位数来表示)
  1. 实例
  • 显示下一天

date +%Y%m%d --date="+1 day"

  • -d参数使用

date -d "nov 22" date -d "2 weeks" date -d "next monday"

cal

可以显示公立日历如只有一个参数,则表示年份(1-9999),如有连个参数,则表示月份和和年份

  1. 常用参数
  • -3 : 显示前一月,当前月,后一月三月的日历
  • -m : 显示星期一为第一列
  • -j : 显示在当前年第几天
  • -y : 显示当前年份的日历
  1. 实例
  • 显示指定年月日期

cal 9 2019

  • 显示2013年每个月日历

cal -y 2019

  • 将星期一做为第一列,显示前中后三月

cal -3m

grep

grep 命令用于查找文件里符合条件的字符串

grep 指令用于查找内容包括指定的范本样式的文件,如果发现其文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输出设备读取数据。

  1. 参数
  • -a或--text : 不要忽略二进制的数据
  • -A<显示行数n>或者--after-context=<显示行数> : 显示匹配字符后n行
  • -B n --before-context : 显示匹配字符前n行
  • -C n --context : 显示匹配字符前后N行
  • -c --count : 计算符合样式的列数
  • -i : 忽略大小写
  • -l : 只列出文件内容符合指定的样式文件名
  • -f : 从文件中读取关键字
  • -n : 显示匹配内容的所在文件中行数
  • -R : 递归查找文件夹
  1. grep的规则表达式
  • ^ #描定行的开始,如:'^grep'匹配所有以grep开头的行
  • #锚定行的结束,如:'grep$'匹配所有以grep结尾的行
  • . #匹配一个非换行符的字符,如:'gr.p'匹配gr后接一个任意字符,然后是p
    • #匹配零个或多个先前字符,如:'*grep' 匹配所有一个或多个空格后紧跟grep的行
  • .* #一起用代表任意字符
  • [] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep
  • [^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包括含A-R和T-Z的一个个字母开头,紧跟rep的行
  1. 实例
  • 查找指定进程

ps -ef |grep svn

  • 查找指定进程个数

ps -ef |grep svn -c

  • 从文件中读取关键词

cat test.log |grep -f key.log

  • 从文件夹中递归查找以grep开头的行,并只列出文件

grep -lR '^grep' /tmp

  • 查找非X开关的行内容

grep '[1]' test.txt

#wc wc 命令是统计指定文件中字节数,字数、行数,并将统计结果输出

  1. 命令格式 wc [option] file
  2. 命令参数
  • -c : 统计字节数
  • -l :统计行数
  • -m : 统计字符数
  • -w : 统计词数,一个字被定义为有空白、跳格或换行字符分隔的字符串
  1. 实例
  • 统计输出结果的行数

cat test.txt |wc -l

ps

ps 命令用来查看当前运行进程的状态,一次性查看,如果需要动态连续结果使用top

  1. Linux上进程有5中状态
  • 运行(正在运行或在运行队列中等待)
  • 中断(休眠中、受阻、在等待某个条件的形成或接受到信号)
  • 不可中断(收到信号不换醒和不可运行,进程必须等待直到有中断发生)
  • 僵死(进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放)
  • 停止(进程收到SIGSOP,SIGTOU信号后停止运行)
  1. ps工具标识进程的5中状态码
  • D 不可中断
  • R 运行
  • S 中断
  • T 停止
  • Z 僵死
  1. 命令参数:
  • -A : 显示所有进程
  • a : 显示所有进程
  • -a : 显示同一终端下所有进程
  • c : 显示进程真实名称
  • e : 显示环境变量
  • f : 显示进程间的关系
  • r : 显示当前终端运行的进程
  • -aux : 显示所有包含其他使用的进程
  1. 实例
  • 显示当前所有进程环境变量及进程间关系

ps -ef

  • 显示当前所有进程

ps -A

  • 与grep连用查找某进程

ps -aux | grep apache

  • 找出与cron 与syslog 这连个服务有关的PID 号码

ps -aux |grep '(cron|syslog)'

top

top 命令用来显示当前系统正在执行的进程的相关信息,包括进程id、内存占用率、CPU占用率等

  1. 常用参数
  • -c : 显示完整的进程命令
  • -s : 保密模式
  • -p<进程号> : 指定进程显示
  • -n<次数> : 循环显示次数
  1. 实例
  • 显示进程信息

top

  • 显示完整命令

top -C

  • 以累计模式显示进程信息

top -S

  • 以批处理模式显示程序信息

top -b

  • 显示指定进程信息

top -p 139

  1. top交互命令
  • h : 显示top交互命令帮助信息
  • c : 切换显示命令名称和完成命令行
  • m : 以内存使用率排序
  • p : 根据CPU使用百分比大小进程排序
  • T : 根据时间/累计时间进行排序
  • W : 将当前设置写入~./toprc文件中
  • o或者O 改变显示项目的顺序

kill

kill 命令用于删除执行中的程序或者工作

kill可将指定的信息送至程序。预设的信息为SIGTER(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKIll(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。

  1. 常用参数
  • -l : 信号,如果不加信号的编号参数,则使用"-l"参数会列出全部的信号名称
  • -a : 当处理当前进程时,不限制命令名和进程号的对应关系
  • -p : 指定kill命令只打印相关进程的进程号,而不发送任何信号
  • -s : 指定发送信号
  • -u : 指定用户
  1. 实例:
  • 先使用ps 查找进程pro1 ,然后用kill 杀掉进程

kill -9 $(ps -ef |grep pro1)

  • 杀死进程

kill 12345

  • 强制杀死进程

kill -KIll 12345

  • 发送SIFHUP信号,可以使用下一信号

kill -HUP pid

free

free 显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存

  1. 常用参数
  • -b : 以Byte显示内存使用情况
  • -k : 以kbx为单位显示内存使用情况
  • -m : 以mb为单位显示内存使用情况
  • -s<间隔秒数> : 持续显示内存
  • -t : 显示内存使用总和
  1. 实例
  • 显示内存使用情况

free -b free -k free -m

  • 以总和的形式显示内存的使用信息

free -t

  • 周期性查询内存使用情况

free -s 10

tar

tar命令用来压缩和解压文件。tar本省不具有压缩功能,只具有打包功能,有关压缩及解压缩是调用其他的功能来完成。弄清两个感念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件

  1. 常用参数
  • -c : 建立新的压缩文件
  • -f : 指定压缩文件
  • -r : 添加文件到已经压缩文件包中
  • -u : 添加改了和现有的文件到压缩包中
  • -x : 从压缩包中抽取文件
  • -t : 显示压缩文件中的内容
  • -z : 支持gzip压缩
  • -j : 支持bzip2压缩
  • -Z : 支持compress解压文件
  • -v : 显示操作过程
  1. 有关gzip及bzip2压缩
  • gzip实例: 压缩gzip fileName.tar和.tgz 解压:gunzip fileNmae.gz或gzip -d filename.gz 对应 tar zvf filename.tar.gz tar zxvf filename.tar.gz
  • bz2实例:压缩bzip2 -z filename.tar.bz2 解压: bunzip filename.bz2或bzip -d filename.bz2 对应: tar jcvf filename.tar.gz 解压: tar jxvf filename.tar.bz2
  1. 实例
  • 将文件全部打包成tar包

tar -cvf log.tar 1.log,2.log 或 tar -cvf log.*

  • 将/etc下的所有文件及目录打包到指定目录,并使用gz压缩

tar -zcvf /tmp/etc.tar.gz /etc

  • 查看刚打包的文件内容(一定加z,应为是使用gzip压缩的)

tar -zxvf /tmp/etc.tar.gz

  • 要压缩打包/home, /etc 但不要/home/dmtsai

tar --exclude/home/dmtsai -zcvf myfile.tar.gz /home/* /etc

  • 压缩文件,非打包

touch a.c tar -czvf test.tar.gz a.c //压缩a.c文件为test.tar.gz

  • 列出压缩文件内容

tar -tzvf test.tar.gz

  • 解压文件

tar -xzvf test.tar.gz

gzip

gzip 命令用于压缩文件 gzip 是个使用广泛的压缩程序,文件经过它压缩后,其名称后面会多出".gz"的扩展名

  1. 常用参数 -a : 使用ASCll文件模式 -c : 把压缩后的文件输出到标准输出设备,不去更动原始文件 -d : 解开压缩文件 -f : 强行压缩文件 -v : 显示版本信息 -l : 列出压缩文件的相关信息
  2. 实例
  • 压缩目录下的所有文件

gzip .*

  • 解压文件,并列出详细信息

gzip -dv *

  • 显示压缩文件的信息

gzip -l *

zip

zip命令用于压缩文件,zip是个使用广泛的压缩程序,文件经过压缩后会另外产生具有".zip" 扩展的压缩文件。

  1. 常用参数
  • -A : 调整可执行的自动解压所文件
  • -b : 指定暂时存放文件的目录
  • -c : 替每个压缩的文件加上注释
  • -d : 从压缩文件内删除指定文件
  • -D : 压缩文件内不建目录名称
  • -q : 不显示指令执行过程
  • -r : 递归处理,将指定目录下的所有文件和子目录一并处理

su

su命令用于变更为其他使用者的身份,除root外,需要键入该使用者的密码

  1. 语法 su [-fmp][-c command][-s shell][--help][--version][-][USER][ARG]
  2. 参数说明
  • -f : 不必读启动档
  • -m : 执行su时不该改变环境变数
  • -c : 变更为账号为USER的使用者并执行指令后再变回原来使用者
  1. 实例
  • 变更账号为root并在执行ls指令后推出变回原使用者

su -c ls root

  • 变更账号为root并传入-f参数给新执行的shell

su root -f

  • 显示当前用户

whoami

rpm

rpm 命令是RPM软件包的管理工具。rpm原本是red hat linux 发现版专门用来管理linux各项套件的程序,由它遵循GPL规则且功能方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让linux易于安装,升级,间接提升了linux的适用度。

  1. 参数说明
  • -a : 查询所有套件
  • -b : 设置包装套件的完成阶段,并指定套件当的文件名称
  • -c : 只列出组态配置文件,本参数需配合"-l"参数使用
  • -e : 删除指定的套件
  • -f : 查询拥有指定文件的套件
  • -h : 套件安装时列出标记
  • -i : 显示套件的线管信息
  • -l : 显示套件的文件列表
  • -p : 超炫指定的PRM套件档
  • -q : 使用询问模式,当遇到任何问题时,rpm指令会先询问用户
  • -v : 显示指令执行过程
  1. 实例
  • 安装软件

rpm -hvi dejagnu-1.4.2.noarch.rpm

xargs

xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。 xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。 xargs 也可以将单行或多行文本输入转换为其他格式。 xargs 默认的命令时echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。 xargs 是一个强有力的命令,它能够捕捉一个命令的输出,然后传递给另外一个命令。之所以竜用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中由这个必要,所以就有了xargs命令,例如:

  • find /sbin -perm +700 |ls -l //错误的命令
  • find /sbin -perm +700 |xargs ls -l //这样才是正确的
  • xargs 一般是和管道一起使用
  1. 常用参数
  • -a file : 从文件中读入作为sdtin
  • -e flag : 注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止
  • -p : 当每次执行一个argument的时候询问一次用户
  • -n n: 表示命令在执行的时候一次用的argument的个数,默认是用所有的
  • -t : 表示先打印命令,然后执行
  1. 实例
  • 多行输入如当行输出

cat test.txt |xargs

  • -n 选项多行输出

cat test.txt |xargs -n3

  • 查找所有的jpg文件,并压缩它们

find .type -f -name "*.jpg" -print |xargs tar -czvf image.tar.gz


  1. ^x ↩︎