Linux -- 部分命令
- ls -- 文件按时间排序
- sort 对文档中的内容进行排序
- ps
- 标准输入
- file 命令
- rm -- 根据 inode 号删除文件
- cut
- xargs
ls -- 文件按时间排序
ls -alt // 按修改时间排序 ls --sort=time -la // 等价于 ls -alt ls -alc // 按创建时间排序 ls -alu // 按访问时间排序 # 按以上标准逆向排序 -r ls -alrt ls --sort=time -lra ls -alrc ls -alru
sort 对文档中的内容进行排序
sort -k3 -t: -n /etc/passwd // -k3 对该文档的第三个字段进行排序; // -t: 使用 : 作为分隔符; // -n: 数值排序, 使用第三段的整个数字进行排序;
ps
ps命令讲解
''' Linux中的 ps 命令是 <Process Status> 的缩写, ps命令用来列出系统中当前运行的哪些进程; ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程, 如果想要动态的显示进程信息,可以使用 top 命令; 要对进程进行监测和控制, 首先必须要了解当前进程的情况, 也就是需要查看当前的进程, 而 ps 命令就是最基本同时也是非常强大的进程查看命令; 使用该命令可以确定有哪些进程正在运行和运行状态 , 进程是否结束, 进程有没有僵死 , 哪些进程占用了过多的资源等等, 总之大部分信息都是可以通过该命令得到. ps 为我们提供了进程的一次性的查看, 它所提供的结果并不是动态连续的; ''' ps命令常用用法(方便查看系统进程) 1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。 2)ps -A 显示所有进程。 3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 4)ps -e 此参数的效果和指定"A"参数相同。 5)ps e 列出程序时,显示每个程序所使用的环境变量。 6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。 7)ps -H 显示树状结构,表示程序间的相互关系。 8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。 9)ps s 采用程序信号的格式显示程序状况。 10)ps S 列出程序时,包括已中断的子程序资料。 11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。 12)ps -u root 显示root用户信息 13)ps x 显示所有程序,不以终端机来区分。 最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。 ############################################################ 实例3:显示所有进程信息,连同命令行 命令:ps -ef 实例4:ps 与grep 常用组合用法,查找特定进程 命令:ps -ef|grep ssh 实例5:将目前属于您自己这次登入的 PID 与相关信息列示出来 命令:ps -l 说明: 各相关信息的意义: F 代表这个程序的旗标 (flag), 4 代表使用者为 super user S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍 UID 程序被该 UID 所拥有 PID 就是这个程序的 ID ! PPID 则是其上级父程序的ID C CPU 使用的资源百分比 PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍 NI 这个是 Nice 值,在下一小节我们会持续介绍 ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-" SZ 使用掉的内存大小 WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作 TTY 登入者的终端机位置 TIME 使用掉的 CPU 时间。 CMD 所下达的指令为何 在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID 而已,所以, 当我使用 ps -l 的时候,只有三个 PID。 实例6:列出目前所有的正在内存当中的程序 命令:ps aux 说明: USER:该 process 属于那个使用者账号的 PID :该 process 的号码 %CPU:该 process 使用掉的 CPU 资源百分比 %MEM:该 process 所占用的物理内存百分比 VSZ :该 process 使用掉的虚拟内存量 (Kbytes) RSS :该 process 占用的固定的内存量 (Kbytes) TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。 STAT:该程序目前的状态,主要的状态有 R :该程序目前正在运作,或者是可被运作 S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。 T :该程序目前正在侦测或者是停止了 Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态 START:该 process 被触发启动的时间 TIME :该 process 实际使用 CPU 运作的时间 COMMAND:该程序的实际指令 实例7:列出类似程序树的程序显示 命令:ps -axjf 实例8:找出与 cron 与 syslog 这两个服务有关的 PID 号码 命令:ps aux | egrep '(cron|syslog)' 3. 输出指定的字段 命令:ps -o pid,ppid,pgrp,session,tpgid,comm 注意:"ps aux"和"ps -aux"不相同。例如"-u"用来显示该用户的进程。但是"u"则是显示详细的信息。 BSD风格:在BSD风格的语法选项前不带连字符。例如: ps aux UNIX/LINUX的风格:在linux风格的语法选项前面有一个破折号.例如: ps -ef 混合使用两种Linux系统上的语法风格是好事儿。例如“ps ax -f”。 1、显示所有进程: $ ps ax $ ps -ef "u"或者"-f"参数来显示所有进程的详细信息 $ ps aux $ ps -ef -f 注意:为什么用户列不显示我的用户名,但显示其他用户,如root、www等,对于所有的用户名(包括你)如果长度大于8个字符,然后ps将只显示UID,而不是用户名。 2、根据用户显示进程: 由进程的所属用户使用“-u”选项后跟用户名来显示。多个用户名可以提供以逗号分隔。 $ ps -f -u www-data 3、通过名字和进程ID显示进程: 通过名字或命令搜索进程,使用“-C”选项后面加搜索词。 $ ps -C apache2 4、根据CPU或者内存进行排序: “–sort”选项由逗号分隔的多个字段可以用指定。此外,该字段可以带有前缀“-”或“”符号,表示降序或升序分别排序。通过进程列表进行排序有很多参数,你可以检查手册页的完整列表。 $ ps aux --sort=-pcpu,+pmem $ ps aux --sort=-pcpu | head -5 5、用树的风格显示进程的层次关系: 许多进程实际上是一些父进程分的分支,知道这父子进程关系往往是有用的。在'–forest'选项将建立ASCII艺术风格层次的树视图。 下面的命令将搜索进程名字为Apache2,形成一个树结构来显示详细的信息。 $ ps -f --forest -C apache2 6、显示一个父进程的子进程: 这里有一个例子显示所有apache进程的分支 $ ps -o pid,uname,comm -C apache2 7、显示一个进程的线程: “-L”选项将显示进程的线程。它可以用来显示特定进程的所有线程或者所有进程。 下面的命令将显示所有id为3150的进程所拥有的线程。 $ ps -p 3150 -L 8、改变要显示的列: ps命令可以配置为只显示选中的列表。为了显示完整列表可以查看手册。 下面的命令只显示PID,用户名,CPU,内存和命令的列。 $ ps -e -o pid,uname,pcpu,pmem,comm 可以重命名列标签,相当的灵活。 $ ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm 9、显示进程运行的时间: 表示进程的运行时间。对于运行的时间,列默认情况下是不显示的,可以使用“-O”选项查看。 $ ps -e -o pid,comm,etime 10、把ps命令变成一个实时查看器: 像往常一样,watch命令可以用来实时捕捉ps显示进程。简单的例子如下: $ watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'
ps 参数
===================================ps 的参数说明============================= l 长格式输出; u 按用户名和启动时间的顺序来显示进程; j 用任务格式来显示进程; f 用树形格式来显示进程; a 显示所有用户的所有进程(包括其它用户)。显示所有进程 -a 显示同一终端下的所有程序 x 显示无控制终端的进程; r 显示运行中的进程; ww 避免详细参数被截断; -A 列出所有的进程 -w 显示加宽可以显示较多的资讯 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的进程 -e 显示所有进程,环境变量 -f 全格式 -h 不显示标题 -l 长格式 -w 宽输出 a 显示终端上地所有进程,包括其他用户地进程 r 只显示正在运行地进程 x 显示没有控制终端地进程 我们常用的选项是组合是 aux 或 lax,还有参数 f 的应用。 pids 只列出进程标识符,之间运用逗号分隔.该进程列表必须在命令行参数地最后一个选项后面紧接着给出,中间不能插入空格.比如:ps -f1,4,5 显示的是进程ID为1,4,5的进程 下介绍长命令行选项,这些选项都运用“--”开头: --sort X[+|-] key [,[+|-] key [,…]] 从SORT KEYS段中选一个多字母键.“+”字符是可选地,因为默认地方向就是按数字升序或者词典顺序,“-”字符是逆序排序(即降序). 比如: ps -jax -sort=uid,-ppid,+pid. --help 显示帮助信息. --version 显示该命令地版本信息. 在前面地选项说明中提到了排序键,接下来对排序键作进一步说明.需要注意地是排序中运用地值是ps运用地内部值,并非仅用于某些输出格式地伪值.排序键列表见下表. ============排序键列表========================== c cmd 可执行地简单名称 C cmdline 完整命令行 f flags 长模式标志 g pgrp 进程地组ID G tpgid 控制tty进程组ID j cutime 累计用户时间 J cstime 累计系统时间 k utime 用户时间 K stime 系统时间 m min_flt 次要页错误地数量 M maj_flt 重点页错误地数量 n cmin_flt 累计次要页错误 N cmaj_flt 累计重点页错误 o session 对话ID p pid 进程ID P ppid 父进程ID r rss 驻留大小 R resident 驻留页 s size 内存大小(千字节) S share 共享页地数量 t tty tty次要设备号 T start_time 进程启动地时间 U uid UID u user 用户名 v vsize 总地虚拟内存数量(字节) y priority 内核调度优先级
ps aux 或者 lax 输出格式
USER PID %CPU %MEM VSZ RSS TTY STA START TIME COMMAND USER // 进程所有者 PID // 进程ID %CPU // 占用的 CPU 使用率 %MEM // 占用的内存使用率 VSZ // 占用的虚拟内存大小 RSS // 占用的内存大小 TTY // 终端的次要装置号码(minor device number of tty) STAT // 进程状态 START // 启动进程的时间 TIME // 进程消耗 CPU 的时间 COMMAND // 命令的名称和参数
标准输入
// 标注输入,为指定用户创建密码 $ echo 123 |passwd zxjr --stdin // 对相应的字符串进行加密 $ echo 123 |openssl passwd -1 -stdin $1$xPokL2Yn$OlmcFvyqt3/ifxdhHPeJg0
file 命令
命令格式:
file [-bchikLnNprsvz] [-f namefile] [-F separator] [-m magicfiles] file ...
命令功能:
用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月和年份;
通过file命令, 辨识文件类型.
命令参数:
-b 列出辨识结果时, 不显示文件名称;
-c 详细显示指令执行过程,便于排错或分析程序执行的情形;
-f <文件名> 列出文件中文件名的文件类型;
-F 使用指定分割符号替换输出文件名后的默认的 ":" 分割符;
-i 输出mime类型的字符串;
-L 查看对应软链接对应文件的文件类型;
-z 尝试去解读压缩文件的内容;
--help 显示命令在线帮助;
-version 显示命令版本信息
使用示例:
// 查看文件类型 file install.log install.log: UTF-8 Unicode text // 不输出文件名称,只显示文件格式及编码 file -b install.log UTF-8 Unicode text // 输出mime类型的字符串 file -i install.log install.log: text/plain; charset=utf-8 // 查看文件中的文件名的文件类型 vim test /etc/networks testing file -f test /etc/networks: ASCII text testing: cannot open 'testing' (No such file or directory) // 使用指定分割符号代替输出文件名后的默认 ":" 分割符 file -F '--' test test-- ASCII text // 尝试去解读压缩文件的内容 file -z test.gz test.gz: ASCII text (gzip compressed data, was "test", from Unix, last modified: Fri Jul 7 13:17:16 2017) // 查看软链接对应文件的文件类型 file test.txt test.txt: symbolic link to `test'
rm -- 根据 inode 号删除文件
ls -i // 查找文件或目录的inode号; // 使用上面查询到的 inode 号进行删除文件; find ./ -inum 25789760 -exec rm {} \;
cut
命令选项
// cut 命令主要用于截取一行中若干个, 选项: * -b // 根据字节来截取,忽视多字符,比如汉字,可以配合[-n]选项来忽视不完整的多字符; * -c // 根据字符来截取,多字节字符当做一个字符; * -d // 根据字段来截取时,定义分割符,默认是TAB;配合[-f]输出指定字段; * -f // 根据字段来截取时,输出指定的字段; * -n // 截取后忽略不完整的字符,配合 [ -b ]使用; * -s // 根据字段来截取时,忽略不包含分割符的行,配合 [ -d ] 使用.
字节截取和字符截取
// 使用方法 * cut -b LIST * cut -c LIST // LIST为要输入的字节位置,可以指定位置也可以指定区间,例如1,3,5表示第一\第三\第五个字节;1,3-5表示第一和第三到第五个字节; // 区别在于多字节字符的处理上,比如汉字;通过下面例子解析: [root@bogon ~]# echo "烽火戏诸侯" |cut -b 1-3 烽 [root@bogon ~]# echo "烽火戏诸侯" |cut -b 1-4 烽 [root@bogon ~]# echo "烽火戏诸侯" |cut -b 1-5 烽 [root@bogon ~]# echo "烽火戏诸侯" |cut -b 1-6 烽火 ****************************************************************** [root@bogon ~]# echo "烽火戏诸侯" |cut -c 1 烽 [root@bogon ~]# echo "烽火戏诸侯" |cut -c 1,2 烽火 [root@bogon ~]# echo "烽火戏诸侯" |cut -c 1-3 烽火戏 ******************************************************************************** // -d参数配置[ -n ]选项忽略不完整的字符 [root@bogon ~]# echo "烽火戏诸侯" |cut -nb 1-7 烽火 [root@bogon ~]# echo "烽火戏诸侯" |cut -nb 1-4 烽
字段截取
// cut还可以根据字段截取行字符,默认字段分割符为TAB表示,可以使用 [ -d ] 来指定分割符,分割符限定为单字符.特别需要注意的是:多字节字符也是单字符,例如: // 配合[ -s ] 选项,可以忽略不包含分割符的行,例如某个文件中,里面没有TAB,全是空格 [root@bogon ~]# vim test.txt UID PID PPID C STIME TTY TIME CMD root 1 0 0 Oct09 ? 00:00:13 init [5] root 2 1 0 Oct09 ? 00:00:06 [ksoftirqd/0] root 3 1 0 Oct09 ? 00:00:05 [events/0] root 4 3 0 Oct09 ? 00:00:00 [khelper] // 截取方法: [root@bogon ~]# cat test.txt |cut -d : -f 2 UID PID PPID C STIME TTY TIME CMD 00 00 00 00 [root@bogon ~]# cut -sd : -f 2 test.txt 00 00 00 00 [root@bogon ~]# echo "烽火戏诸侯"|cut -d 戏 -f 2 诸侯
xargs
很多命令不支持管道来传递参数 -- xargs
参数:
- -0 : 当 sdtin 含有特殊字符的时候, 将其当成一般字符;
- -a <file> : 从文件中读入作为参数;
- -p : 当每次执行一个 argumer 的时候询问一次用户;
- -n <num> : 表示命令在执行的时候一次用的argument的个数, 默认是用所有的;
- -t : 表示先打印命令, 然后再执行
- -i 或 -I : 一行一行赋值给{}, 可以用 {} 代替;
- -r : 当 xargs 的输入为空时停止 xargs, 不再去执行了
示例:
// -0 参数 echo '\n' |xargs echo n echo '\n' |xargs -0 echo \n // -a 参数 xargs -a test echo good good study day day up gogogo good gold goood goolld // -e 参数 cat test |xargs -E 'gogogo' echo good good study day day up // -p 参数 cat test |xargs -p echo echo good good study day day up gogogo good gold goood goolld ?...y good good study day day up gogogo good gold goood goolld // -n 参数 cat test |xargs -n1 echo good good study day day up gogogo good gold goood goolld // -t 参数 cat test |xargs -t echo echo good good study day day up gogogo good gold goood goolld good good study day day up gogogo good gold goood goolld // -i 参数 ls |xargs -t -i mv {} {}.back mv test test.back // -r 参数 echo "" |xargs -t -r mv
// 使用 xargs 进行操作;
find ./ -type f -name tian
./tian
find ./ -type f -name tian |xargs rm -f ; // 使用 xargs 进行删除;
find ./ -type f -name tian -exec rm -f {} \; // 使用 -exec 进行删除, 必须使用{} , 及 \; 结尾...
作者:TZHR —— 世间一散人
出处:https://www.cnblogs.com/haorong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明