Linux相关命令(进程、目录、文件编辑、打包、压缩、系统、curl命令、Vim命令、日志检索(grep、管道、正则表达式))

进程相关命令

ps

  • -a 显示所有进程(包括其他用户的进程)
  • -u 用户以及其他详细信息
  • -x 显示没有终端控制的进程

pstree:pstree命令用于查看进程树,以树形结构列出进程信息

top:top命令用于动态的监视进程活动及查看系统负载等信息,格式为:top

pidof:pidof命令用于查询每个指定服务进程的PID值,格式为:pidof [参数] [服务名称]

kill:kill命令用于终止某个指定PID的服务进程,格式为:kill [参数] [服务名称]
kill -9 PID用于强行终止某项服务,一般不建议使用
killall:killall命令用于终止某个指定名称的服务所对应的全部进程,格式为:killall [参数] [进程名称]

实战

查看所有进程: ps -ef
查找指定进程java: ps -ef  |grep weblogic
杀掉进程:    kill -9 进程号
启动进程:    ./start  startWebLogic.sh

查看占用某一端口的进程

  • lsof -i:端口号
  • netstat -tunlp|grep 端口号

目录相关命令

pwd:pwd命令用于显示当前用户所处的工作目录,格式为:pwd

cd:cd命令用于切换工作目录,格式为:cd 目录名称,特别的:

  • cd . . :进入上一级目录
  • cd ~ :切换到当前用户的家目录

ls:ls命令用于显示目录中的文件信息,不包括隐含文件,格式为 :ls [选项]   [文件]

ll:ll命令用于显示目录中的详细文件信息(包括隐含文件),包括文件属性、权限、属主、大小等信息。格式为:ll

文件编辑命令

cat:cat命令用于查看纯文本文件(内容较少的),格式为:cat [选项] 文件

more:more命令适合用于查看纯文本文件(内容较多的),格式为:more [选项] 文件

  • more命令会在最下面使用百分比的形式来提示已经阅读了多少内容
  • 可以使用空格键或回车键向下翻页

head:head命令用于查看纯文本文档的前N行,格式为:head [数字选项] 文件 ,如:head 20 xingze.txt会显示xingze.txt文件的前20行

tail:tail命令用于查看纯文本文档的后N行或持续刷新内容,格式为:tail [选项] 文件

  • tail最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,特别有用,此时命令格式为:tail -f 文件名

tr:tr 命令用于替换文本文件中的字符,格式为:tr [原始字符] [目标字符]

wc:wc命令用于统计指定文本的行数、字数、字节数,格式为:wc [参数] 文件

  • -l 只显示行数
  • -w 只显示单词数
  • -c 只显示字节数

stat:stat命令用于查看文件的具体存储信息和时间等信息,格式为: stat 文件名

cut:cut命令用于按”列“提取文本字符,格式为: cut [参数] 文本

diff:diff命令用于比较多个文本文件的差异,格式为: diff [参数] 文件

chmod:更改权限chmod 命令是一个非常实用且常用的命令,因为我们在操作文件时经常会遇到提示没有权限的问题,这时就可以用chmod命令来设置文件或目录的权限,格式为:chmod [参数] 权限 文件或目录名称。如更改test.txt权限可以为:chmod 764 test.txt

chown:chown命令可以用来设置文件或目录的所有者和所属组,格式为: chown [参数] 所有者:所属组 文件或目录名

  • chmod和chown命令是用于修改文件或目录的属性和权限的最常用命令,它们还有一个特备的共性,就是针对目录进行操作时需要加上大写参数 -R 来表示递归操作,即对目录中的所有文件进行整体操作。

在Linux系统中,每个文件都有所有者、所有组,并且规定了文件的所有者、所有组及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。对于一般文件来说,“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”表示能够运行一个脚本程序,如shell脚本等可执行程序。而对于目录文件来说,“可读”表示能够读取文件内的文件列表;“可写”表示能在目录内新增、删除、重命名文件;“可执行”则表示能进入该目录。

文件权限的数字法:文件权限的数字法基于字符表示(rwx)的权限而来,其目的是简化权限的表示,例如某个文件的权限为7(4+2+1)则表示可读(4)、可写(2)、可执行(1),若权限为6(4+2+0)则表示可读(4)、可写(2)、不可执行(0)。假如对于一个文件,其所有者拥有可读、可写、可执行的权限,其所属组拥有可读、可写的权限,其他人拥有可读权限。那么这个文件的权限就是:-rwxrw-r- - ,数字法表示即为764。其他依此类推。

在Linux系统中一切都是文件,但是每个文件的类型不一定是相同的,Linux系统使用了不同的字符加以区分,常见的字符如下所示:

  • -:普通文件
  • d:目录文件
  • l:链接文件
  • b:块设备文件
  • c:字符设备文件
  • p:管道文件

打包压缩命令

tar:tar命令用于对文件进行打包压缩或解压,格式为: tar [选项] [文件],Linux中常见的压缩文件格式较多,其中主要使用的是 .tar或 .tar.gz或 .tar.bz2格式,大部分都是由tar命令来生成的。主要参数如下:

  • -c 创建压缩文件
  • -x 解开压缩文件
  • -t 查看压缩包内有哪些文件
  • -z 用Gzip压缩或解压
  • -j 用bzip2压缩或解压
  • -v 显示压缩或解压的过程
  • -f 目标文件名
  • -p 保留原始的权限与属性
  • -P 使用绝对路径来压缩
  • -C 指定解压的目录
    注意:
  • -c参数用于解压文件,-x参数用于解压文件,因此这两个参数不能同时使用
  • 非常推荐使用 -v 参数来向用户不断显示压缩或解压的过程
  • -f参数非常重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称
  • 打包压缩命令一般为 : tar -czvf 压缩包名称.tar.gz 要打包的目录
  • 解压命令一般为: tar -xzvf 压缩包名称.tar.gz -C 解压到的目录

系统工作命令

echo:echo命令用于在终端输出字符串或变量提取后的值,格式为echo [字符串|$变量]

date:date命令用于显示系统的实践或日期,格式为: date [选项] [+指定的格式] ,date -s 命令用于设置系统当前时间

  • %Y 年
  • %m 月
  • %d 日
  • %H 小时(00-23)
  • %I 小时(00-12)
  • %M 分钟(00-59)
  • %S 秒(00-59)
  • %j 今年中的第几天
    如:date “+%Y-%m-%d %H:%M:%S” 输出为:2019-07-29 11:56:33

reboot:reboot命令用于重启系统,格式为:reboot

poweroff:poweroff命令用于关闭系统,格式为:poweroff

wget:wget命令用于在终端中下载网络文件,格式为: wget [参数] 下载地址

  • -b 后台下载模式
  • -P 下载到指定目录
  • -t 最大尝试次数
  • -c 断点续传
  • -p 下载页面内所有资源,包括图片、视频等
  • -r 递归下载
  • Z(僵死)
  • T(停止)

系统状态检测命令

ifconfig:ifconfig命令用于获取网卡配置与网络状态等信息,格式为:ifconfig [网络设备] [参数]

uname:uname命令用于查看系统内核与版本等信息,格式为:uname [-a]
在使用uname命令时,一般会固定搭配上-a参数来完整的查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型、操作系统名称等信息。

uptime:uptime用于查看系统的负载信息,格式为uptime

free:free用于显示当前系统中内存的使用量信息,格式为:free [-h]

who:who用于查看当前登入主机的用户终端信息,格式为:who [参数 ]

last:last命令用于查看所有系统的登录信息,格式为:last [参数]

history:history用于显示历史执行过的命令,格式为:history [-c]

sosreport:sosreport命令用于收集系统配置及架构信息并输出诊断文档,格式为:sosreport

CURL命令

在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。语法:

curl [options] [URL...]
  • GET 方法是在 curl 中发出请求的默认方法,因此不必指定任何参数。
  • POST请求:curl -X POST https://blog.ucwords.com

Vim命令

常用命令

  • iInsert 模式,按ESC回到 Normal模式.
  • x → 删当前光标所在的一个字符。
  • :wq → 存盘 + 退出 (:w存盘, :q 退出) (注: :w 后可以跟文件名)
  • dd → 删除当前行,并把删除的行存到剪贴板里
  • p → 粘贴剪贴板

Windows中使用cmd窗口连接远程Linux服务器

ssh 用户名@服务器地址
然后输入密码即可。
如 ssh test@115.156.197.24

日志检索

grep和管道|

在Linux中,你可以使用grep命令来检索包含特定关键词的日志。如果你想要检索包含多个关键词的日志,你可以使用grep-e选项,或者使用管道|将多个grep命令连接起来。

如果你想要限制返回的日志条数,你可以使用headtail命令。head命令用于获取文件的前N行,tail命令用于获取文件的后N行。

以下是一些示例:

  1. 使用-e选项检索包含"ERROR""WARNING"的日志,并使用head命令限制返回的日志条数为10条:
grep -e "ERROR" -e "WARNING" logfile.txt | head -n 10
  1. 使用管道|将多个grep命令连接起来,检索包含"ERROR""database"的日志:
grep "ERROR" logfile.txt | grep "database"
  1. 使用管道|将多个grep命令连接起来,检索包含"ERROR"和"database"的日志,并使用tail命令限制返回的日志条数为10条:
grep "ERROR" logfile.txt | grep "database" | tail -n 10

在这些示例中,head -n 10tail -n 10用于限制返回的日志条数为10条。如果你想要返回更多或更少的日志条数,你可以将10替换为你想要的数字。

需要注意的是,grep命令是区分大小写的,如果你想要进行不区分大小写的检索,你可以添加-i选项,例如grep -i "error" logfile.txt

grep和正则表达式

在Linux中,你可以使用grep命令配合正则表达式来检索日志。grep支持基本的正则表达式(Basic Regular Expressions,BRE)和扩展的正则表达式(Extended Regular Expressions,ERE)。

以下是一些示例:

  1. 使用基本的正则表达式检索以"ERROR"开始,以"database"结束的行:
grep '^ERROR.*database$' logfile.txt

在这个示例中,^表示行的开始,.*表示任意数量的任意字符,$表示行的结束。

  1. 使用扩展的正则表达式检索包含"ERROR"或"WARNING"的行:
grep -E 'ERROR|WARNING' logfile.txt

在这个示例中,|表示或,-E选项用于启用扩展的正则表达式。

如果你想要限制返回的日志条数,你可以使用headtail命令,例如:

grep '^ERROR.*database$' logfile.txt | head -n 10

在这个示例中,head -n 10用于限制返回的日志条数为10条。

需要注意的是,grep命令是区分大小写的,如果你想要进行不区分大小写的检索,你可以添加-i选项,例如grep -i '^error.*database$' logfile.txt

正则表达式的效率:正则表达式是一个非常强大的工具,可以用来进行复杂的文本匹配和处理。然而,正则表达式的效率并不总是最高的,特别是对于复杂的正则表达式和大量的数据。正则表达式的效率主要取决于以下几个因素:

  1. 正则表达式的复杂性:复杂的正则表达式需要更多的计算资源来处理。例如,包含很多分组、回溯和查找的正则表达式通常比简单的正则表达式慢。

  2. 数据的大小:处理大量的数据需要更多的时间。如果你需要在大量的数据中使用正则表达式,可能需要考虑其他的优化策略,例如分割数据或者使用并行处理。

  3. 正则表达式的实现:不同的编程语言和库对正则表达式的实现可能会有所不同,这可能会影响正则表达式的效率。

总的来说,虽然正则表达式在某些情况下可能不是最高效的解决方案,但它的灵活性和强大的功能使得它在许多情况下仍然是一个很好的选择。如果你发现你的正则表达式运行得很慢,你可能需要考虑优化你的正则表达式,或者寻找其他的解决方案。

grep和管道| VS grep和正则表达式

对于大文件,使用多个grep命令和管道(|)组合通常会比使用一个包含多个关键词的正则表达式更快。这是因为grep命令是直接在文本中查找特定的字符串,而不需要解析和处理正则表达式。

例如,你可以使用以下命令来检索包含三个关键词"ERROR"、"database"和"timeout"的日志:

grep "ERROR" logfile.txt | grep "database" | grep "timeout"

这个命令会首先从日志文件中检索包含"ERROR"的行,然后从这些行中进一步检索包含"database"的行,最后再从这些行中检索包含"timeout"的行。

然而,这并不是绝对的。实际的性能取决于许多因素,包括日志文件的大小、关键词的数量和位置,以及系统的负载等。在某些情况下,使用正则表达式可能会更快,特别是当关键词的数量非常多,或者需要进行复杂的模式匹配时。

如果你对性能有严格的要求,最好的做法是对你的具体情况进行基准测试,看看哪种方法的性能更好。你可以使用time命令来测量命令的执行时间,例如:

time grep "ERROR" logfile.txt | grep "database" | grep "timeout"

time grep -E "ERROR.*database.*timeout" logfile.txt

这将会显示出每个命令的实际运行时间,用户CPU时间和系统CPU时间,从而可以帮助你判断哪种方法更快。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值