linux命令2

1.grep  

zgrep QYJF03 *.zip | more   项目中使用了这个命令来查看日志中发过的含有交易码为QYJF03的报文。本来要一个一个去解压ZIP日志,然后搜索QYJF03找到对应的发送、响应报文,使用这个命令大大简化了操作,速度效率提升好多。望而生畏的

grep是linux用户用来搜索文本字符串的命令行工具。

zgrep: 用于搜索压缩文件中的字符串或模式的命令,可以用来搜索特定字符串或模式,并将结果输出到屏幕。

例子:

grep -c 'hello' example.txt        查找文件中包含“hello”的行数
grep -v 'hello' example.txt        查找文件中不包含“hello”的行
grep 'string' *.txt                搜索文件夹中所有的txt文件
grep -i 'hello' example.txt        如果要搜索时忽略大小写,可以使用-i选项

还可以在查询出来的结果中再次过滤,比如搜索参加活动的交易,且客户号为110002345的:

zgrep mktActivityJoin maketing-2024-02-03.*.log.zip | grep 110002345 | more

ps:    zless   查看zip包的文件内容

 

ll | grep -i dms    用于列出当前目录下的文件,并通过 grep 过滤出包含字符串 dms 的条目,且忽略大小写。

 

 

2. | 管道命令

将‘|’前面命令的输出作为'|'后面的输入。例如:

ls -s|sort -nr        -s 是file size,-n是numeric-sort,-r是reverse,反转,该命令列出当前目录中的文档(含size),并把输出送给sort命令作为输入,sort命令按数字递减的顺序把ls的输出排序。
ls -l | more          该命令列出当前目录中的任何文档,并把输出送给more命令作为输入,more命令分页显示文件列表。
ls -la | less         将 ls 命令的结果 重定向到 less 来显示,而不是默认的终端

grep 20231023XXX22 bank.2023-10-25.*.log | grep -i application  在bank.2023-10-25.*.log中搜索20231023XXX22流水号,并且过滤出含有application字符串的,忽略大小写

 

3.输出命令

head -n 10 fileName >> a.txt        将fileName文件的前10行输出到a.txt

 

4.查看文件大小

du -h a.txt        查看a.txt文件大小

 

5.touch  

touch 命令主要用于创建普通文件,用法为 touch test.txt,如果文件存在,则表示修改当前文件时间,常用参数详解如下:

用法:touch [选项] 文件 将每个文件的访问时间和修改时间改为当前时间;
						不存在的文件将会被创建为空文件,除非使用-c 或-h 选项;
						如果文件名为"-"则特殊处理,更改与标准输出相关的文件的访问时间;
						长选项必须使用的参数对于短选项时也是必需使用的;
-a 						只更改访问时间;
-c, --no-create 		不创建任何文件;
-d, --date=字符串 		 使用指定字符串表示时间而非当前时间;
-f						 (忽略);
-h, --no-dereference 	会影响符号链接本身,而非符号链接所指示的目的地;
						(当系统支持更改符号链接的所有者时,此选项才有用);
-m 						只更改修改时间;
-r, --reference=文件 	  使用指定文件的时间属性而非当前时间;
-t STAMP 				使用[[CC]YY]MMDDhhmm[.ss] 格式的时间而非当前时间;
	--time=WORD 		使用 WORD 指定的时间:access、atime、use 都等于-a;
						选项的效果,而 modify、mtime 等于-m 选项的效果;
	--help 				显示此帮助信息并退出;
	--version 			显示版本信息并退出。
请注意,-d 和-t 选项可接受不同的时间/日期格式

touch touch.txt            创建touch.txt

touch -a linux.txt         修改文件的访问时间  (-a表示access)

touch -m linux.txt          修改文件的更改时间  (-m 表示modify)

 

6.stat命令  

[root@nie linux]# stat aa/linux.txt 
  文件:aa/linux.txt
  大小:22        	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:3400403     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(  777/ UNKNOWN)   Gid:(    0/    root)
环境:unconfined_u:object_r:user_home_t:s0
最近访问:2023-06-01 13:35:02.304561000 +0800
最近更改:2023-06-01 13:00:25.626698812 +0800
最近改动:2023-06-01 13:03:32.400686418 +0800
创建时间:-

stat命令用于显示文件的状态信息。
stat命令可以查看的信息包括:
文件(File):显示文件名
大小(Size):显示文件大小
块(Blocks):文件使用的数据块总数
IO块(IO Block):IO块大小
文件类型(regular file):文件类型(普通文件)
设备(Device):设备编号
Inode:Inode号
硬链接(Links):链接数
权限(Access):文件的权限
Gid、Uid:文件所有权的Gid和Uid
访问时间(access time):表示我们最后一次访问(仅仅是访问,没有改动)文件的时间
更改时间(modify time):表示我们最后一次修改文件的时间
改动时间(change time):表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等
创建时间(Birth time) : 文件创建时间,crtime,不过据查此属性linux已废弃,目前状态显示结果均为-

 

7.echo命令  

echo > filename

filename为待创建的文件名。接着,按下Enter键即可创建一个空文件。如果想要创建一个具有内容的文件,可以使用echo命令结合重定向符>>,例如echo "content" >> filename。这会在文件中添加一行文本。

 

8.cat命令   

cat > filename    

filename为待创建的文件名,接着,按下Enter键,进入编辑模式。在编辑模式下,输入文件的内容。完成后,按下Ctrl + D保存文件并退出编辑模式,即可创建一个具有内容的文件。如果只想创建一个空文件,可以直接按下Ctrl + D

cat filename.txt      查看文件内容

cat -n filename.txt      查看文件内容,并显示行号

 

9.显示行号,打开文件,按下ESC输入以下命令:

:set nu          显示行号

:set nonu          不显示行号

:set nu!           不显示行号 

 

10.curl    

转自:https://www.cnblogs.com/duhuo/p/5695256.html

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

语法:# curl [option] [url]
-A/--user-agent <string>              设置用户代理发送给服务器
-b/--cookie <name=string/file>    cookie字符串或文件读取位置
-c/--cookie-jar <file>                    操作结束后把cookie写入到这个文件中
-C/--continue-at <offset>            断点续转
-D/--dump-header <file>              把header信息写入到该文件中
-e/--referer                                  来源网址
-f/--fail                                          连接失败时不显示http错误
-o/--output                                  把输出写到该文件中
-O/--remote-name                      把输出写到该文件中,保留远程文件的文件名
-r/--range <range>                      检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent                                    静音模式。不输出任何东西
-T/--upload-file <file>                  上传文件
-u/--user <user[:password]>      设置服务器的用户和密码
-w/--write-out [format]                什么输出完成后
-x/--proxy <host[:port]>              在给定的端口上使用HTTP代理
-#/--progress-bar                        进度条显示当前的传送状态

示例用法:

curl http://www.linux.com              执行后,www.linux.com 的html就会显示在屏幕上了,由于安装linux的时候很多时候是没有安装桌面的,也意味着没有浏览器,因此这个方法也经常用于测试一台服务器是否可以到达一个网站

curl http://www.linux.com >> linux.html       保存访问的网页,使用linux的重定向功能保存

curl -o linux.html http://www.linux.com        可以使用curl的内置option:-o(小写)保存网页

curl -o dodo1.jpg http:www.linux.com/dodo1.JPG    利用curl下载文件。使用内置option:-o(小写)

curl -O http://www.linux.com/dodo1.JPG        使用内置option:-O(大写)。这样就会以服务器上的名称保存文件到本地

分块下载:

有时候下载的东西会比较大,这个时候我们可以分段下载。使用内置option:-r
# curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
# curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
# curl -r 200- -o dodo1_part3.JPG http://www.linux.com/dodo1.JPG
# cat dodo1_part* > dodo1.JPG
这样就可以查看dodo1.JPG的内容了

curl -# -O http://www.linux.com/dodo1.JPG        显示下载进度条

curl -s -O http://www.linux.com/dodo1.JPG      不会显示下载进度信息

curl -T dodo1.JPG -u 用户名:密码 ftp://www.linux.com/img/  curl不仅仅可以下载文件,还可以上传文件。通过内置option:-T来实现。这样就向ftp服务器上传了文件dodo1.JPG

 

测试一个网址通不通可以这样:     curl http://127.0.0.1:8043

测试一个接口通不通:         curl -X POST http://vcardtest.tenkent.com/virtualcard-rest/outApi/ahnj/dataSync

要查看百度首页的源代码:          在命令行中输入curl https://www.baidu.com,它就会返回百度首页的 HTML 代码

curl可以模拟各种 HTTP 请求方法,如 GET、POST 等:

对于 GET 请求,上面查看网页内容的例子就是一个典型的 GET 请求,它用于获取服务器上的资源。
对于 POST 请求,假设要向一个服务器端的脚本发送数据,可以使用curl -X POST -d "param1=value1&param2 = value2" [URL]。
其中-X POST指定请求方法为 POST,-d选项用于指定要发送的数据,数据格式一般是键值对的形式,用&连接不同的键值对。
例如,向一个本地运行的测试服务器http://localhost:3000/api/submit发送用户注册信息username=testuser&password=testpass,可以使用
curl -X POST -d "username=testuser&password=testpass" http://localhost:3000/api/submit。

 

11.uptime    

参考博客:https://blog.csdn.net/z19861216/article/details/130881624

linux命令uptime是用来为用户提供系统从开启到当前运行uptime命令时系统已运行的时长信息,除此之外,还提了系统启动时间,当前登录用户,系统平均负载信息。

参数 说明
-h 显示帮助信息
-V 显示uptime版本信息
-p 以人类可识别的方式输出系统从开机到到当前的运行时长
-s 以yyyy-mm-dd HH:MM:SS格式输出系统的启动时间

 

uptime -p

uptime输出详解

10:56:51 up 1:25 3 users load average: 0.00, 0.01, 0.03
当前系统时间

系统已开机运行了多长时间

即:已运行1小时25分钟

当前登录用户数

即:活动用户

过去 1分钟、5分钟、 15 分钟内可用的系统负载的平均值

 

12.查询CPU的核心数

grep "model name" /proc/cpuinfo

grep "model name" /proc/cpuinfo | wc -l

 

13.less

less a.txt         显示文件内容

less -N a.txt         显示文件内容,带行号

less 命令默认不显示行号,可以使用 -N 选项显示行号

g            跳转到第一行

G            跳转到最后一行,即Shift + g

 

14.netstat

netstat 命令用于显示网络状态。

netstat -an | grep 9443          查看9443端口的启动情况

 

15.sftp

以登录sftp服务器,并且下载文件为例:

[csii@localhost staffInfo]$ sftp aduser@10.0.0.5
sftp> cd /ODSFILE/HRP/PUB
sftp> ls
sftp> get ODS.FILE_1208_0X03_TXT_20240920.ok
sftp> get ODS.FILE_1208_0X03_TXT.txt
sftp> quit

如果是下载文件夹:

get -r folderName

 

16.date

查看服务器时间:date

修改服务器时间:date -s '2024-10-31 14:48:00'     如果权限不允许的话,前面加sudo

--切换用户,具有sudo权限,可以修改系统时间
su testuser        
Password:

--修改系统时间
sudo date -s '2025-06-17 18:01:00' 

--查看系统时间
date

 

17.lscpu

lscpu用于显示有关cpu架构信息,它从sysfs和/proc/cpuinfo中收集并显示CPU的重要信息,包括其数量、核心、CPU家族、模型、缓存大小等。这个命令对于理解你的系统的CPU特性非常有用,特别是在需要优化应用程序以利用CPU架构特性时。

总的逻辑CPU数 = 插槽数量  *  每个插槽上的核心数  *  每个核心线程数,即:

CPU(s) = Socket(s)   *   Core(s) per socket   *   Thread(s) per core

 

  • Architecture: CPU 架构(如 x86_64, aarch64
  • CPU op-mode(s): 支持的运行模式(如 32 位、64 位)。

  • CPU(s): 逻辑 CPU 的总数。

  • Thread(s) per core: 每个物理核心的线程数(超线程技术下通常为 2)。

  • Core(s) per socket: 每个cpu插槽核数/每颗物理cpu核数

  • Socket(s): 物理 CPU 插槽的数量(即物理 CPU 数量)。

  • Vendor ID: CPU 制造商(如 GenuineIntel、AuthenticAMD)。

  • CPU family/model/stepping: CPU 型号的标识符。

  • Model name: CPU 的完整型号名称。

  • CPU MHz: CPU 的当前频率。

  • BogoMIPS: 粗略计算的 CPU 性能指标(无实际意义)。

  • L1d cache/L1i cache: 一级数据缓存和指令缓存。

  • L2 cache/L3 cache: 二级和三级缓存大小。

常用选项

  • -e, --extended:在表格中显示 CPU 拓扑,包括 CPU、核心、插槽、节点等

  • --jsonJSON 格式输出

  • -p, --parse:可解析的输出(类似 CSV 格式)

  • -x:以可解析的格式显示额外的详细信息

  • -s, --sysroot:指定系统根目录(用于分析其他系统的信息)

  • -b, --online:仅显示在线的 CPU

  • -c, --offline:仅显示离线的 CPU

  • --all:显示在线和离线 CPU

  • -y, --physical:打印物理id而不是逻辑id

 

 

18.top          

参考博客:https://www.jianshu.com/p/bdd6f08ee1a5

Linux top命令用于实时显示进程的动态,是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。

top  可选参数

第一行为任务队列信息
top - 19:26:14 当前时间
up 462 days, 1:49, 系统已运行时间
1 user, 当前登录用户数
load average: 0.09, 0.05, 0.05 系统负载,三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二行为进程信息
Tasks: 641 total, 进程总数
1 running, 正在运行的进程数
640 sleeping, 休眠的进程数
0 stopped, 停止的进程数
0 zombie 僵尸进程数

第三~六行为cpu信息,使用1打开查看所有cpu,当前服务器为6核
%Cpu0 : 1.7 us, 0.3 sy, 0.0 ni, 97.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.3 st
%Cpu1 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu0 :
1.7 us, 用户空间占用CPU百分比
0.3 sy, 内核空间占用CPU百分比
0.0 ni, 用户进程空间内改变过优先级的进程占用CPU百分比
97.6 id, 空闲CPU百分比
0.0 wa, 等待输入输出的CPU时间百分比
0.0 hi, 硬件CPU中断占用百分比
0.0 si, 软中断占用百分比
0.3 st 虚拟机占用百分比

第七行为物理内存
KiB Mem : 单位kb
14871080 total, 物理内存总数
1030044 free, 空闲内存空间大小
2584280 used, 已使用物理内存大小
11256756 buff/cache 用作内核缓存的内存量

第八行为置换内存
KiB Swap: 单位kb
4194300 total, 交换区总量
3406820 free, 空闲交换区总量
787480 used. 已使用交换区大小
11790572 avail Mem 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

第九行
进程信息区统计信息区域的下方显示了各个进程的详细信息,默认显示
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND(各参数含义见下交互f指令)

 

 

19.linux修改挂载路径  

例子:

将/dev/datavg/data_lv设备下的挂载点/home/yyglb/pisces/  修改为新的挂载点/share_files

操作步骤:

1.备份/etc/fstab文件,cp /etc/fstab  /etc/fstab.bak

2.编辑/fstab文件,将设备下原来的挂载点/home/yyglb/pisces/修改为/share_files

/dev/datavg/data_lv    /share_files       xfs       defaults     0 0

3.卸载当前挂载点/home/yyglb/pisces/:

sudo umount /home/yyglb/pisces

4.重新挂载:

sudo mount /dev/datavg/data_lv  /share_files/   或者:sudo mount /share_files/

5.验证:df -h

注意:

  • 确保新的挂载点目录为空,否则挂载后原有内容会被隐藏。

  • 修改 /etc/fstab 时要小心,错误的配置可能导致系统无法启动

 

fstab文件解读:

/etc/fstab 是 Linux 系统中用于定义文件系统挂载信息的配置文件。系统启动时会根据该文件自动挂载指定的文件系统。以下是 /etc/fstab 文件的详细解读:

<设备或UUID> <挂载点> <文件系统类型> <挂载选项> <dump备份标志> <fsck检查顺序>

1. 设备或UUID
指定要挂载的设备或分区的标识。
可以是设备路径(如 /dev/sda1)或 UUID(如 UUID=1234-5678)。
使用 UUID 更可靠,因为设备路径可能会变化。

2. 挂载点
指定文件系统的挂载路径(挂载点)。
必须是一个已存在的目录。

3. 文件系统类型
指定文件系统的类型。
常见的文件系统类型包括:
ext4:Linux 常用的文件系统。
xfs:高性能文件系统。
vfat:FAT32 文件系统。
ntfs:Windows NTFS 文件系统。
swap:交换分区。
nfs:网络文件系统。
auto:自动检测文件系统类型。

4. 挂载选项
指定挂载时的选项,多个选项用逗号分隔。
常见的选项包括:
defaults:默认选项(包括 rw, suid, dev, exec, auto, nouser, async)。
rw:以读写模式挂载。
ro:以只读模式挂载。
noexec:禁止执行文件。
nosuid:禁止 SUID 和 SGID 权限。
nofail:挂载失败时不报错(适用于非关键文件系统)。
user:允许普通用户挂载。
auto:系统启动时自动挂载。
noauto:系统启动时不自动挂载


总结
/etc/fstab 用于定义文件系统的挂载信息。
每行包含 6 个字段:设备/UUID、挂载点、文件系统类型、挂载选项、dump 标志、fsck 顺序。

 

20. nohup    

参考:Linux nohup

nohup是Linux/Unix系统中的一个实用命令,全称是’no hangup’,意为"不挂起"。它的主要功能是让指定的命令或脚本在终端关闭或用户退出登录后继续在后台运行。通常情况下,当用户通过终端启动一个进程后,如果关闭终端或退出登录(例如通过SSH断开连接),该进程会收到一个SIGHUP(挂起信号),导致进程终止。而nohup的作用就是忽略这个SIGHUP信号,从而保证进程能够持续运行。

例如:

nohup ./start.sh > test.log &

分解解释:

./start.sh    执行当前目录下的名为 start.sh 的脚本文件。

> test.log    将脚本的标准输出(stdout)重定向到 test.log 文件中(覆盖写入)。如果希望追加输出(而非覆盖),可以用 >> test.log

nohup    忽略 SIGHUP 信号(即终端关闭时,进程不会终止)。通常用于在退出终端后仍保持进程运行。

&    将命令放入后台运行,终端可继续输入其他命令。

完整含义:在后台运行 ./start.sh 脚本,并将其输出保存到 test.log 文件中,同时忽略挂断信号(终端退出后进程仍继续运行)。”

注意事项:

错误输出(stderr)默认不会重定向到 test.log。若需同时重定向错误输出,可以:nohup ./start.sh > test.log 2>&1 &

  • 2>&1 表示将标准错误(文件描述符 2)合并到标准输出(文件描述符 1)。
  • 进程的 PID 会显示在终端,可通过 jobs 查看后台任务,或 kill <PID> 终止进程。

典型用途:长时间运行的服务或脚本(如 Web 服务、数据处理任务),即使退出终端也不会中断。

 

21.sed  

参考博客:https://www.cnblogs.com/TangQF/articles/18555649

参考博客:https://blog.csdn.net/HQ354974212/article/details/149200254

sed -i "s/7.0.11/7.2.10/g" *.sh   含义:将当前目录下所有sh文件中的7.0.11替换为7.2.10

sed: sed 的全称是:Stream Editor 流编辑器,在 Linux 中是一个强大的文本处理工具,可以处理文件或标准输入流。

-i:  修改后覆盖源文件(-i),直接修改文件(而不是输出到标准输出)

"s/node1/node2/g":  s-文本替换。  s/old/new/:将 old 替换为 new  g:全局替换

sed 's/linux/unix/gi' file: 替换时不区分大小写(i)

 

sed -i "s/node1/node2/g" `grep "node1" -rl ./`

含义:从当前目录搜索,递归搜索子目录,输出包含'node1'的文件名,然后将这些文件名中的node1全部替换为node2。

  1. grep "node1" -rl ./

    • grep:搜索工具

    • "node1":搜索的文本模式

    • -r:递归搜索子目录

    • -l:只输出包含匹配内容的文件名(而不是匹配的行)

    • ./:从当前目录开始搜索
      作用:递归查找当前目录及其子目录中所有包含 "node1" 的文件,并返回这些文件的路径列表。

  2. `grep "node1" -rl ./`

    • 反引号(``)表示命令替换,会先执行内部的 grep 命令,然后将结果(文件列表)作为参数传递给外部的 sed 命令。

  3. sed -i "s/node1/node2/g"

    • sed:流编辑器,用于文本替换

    • -i:直接修改文件(而不是输出到终端)

    • "s/node1/node2/g":替换命令

      • s/old/new/:将 old 替换为 new

      • g:全局替换(一行中所有匹配的 node1 都会被替换)
        作用:将文件中的所有 node1 替换为 node2

完整含义:

递归查找当前目录及其子目录中所有包含 "node1" 的文件,并将这些文件中的 所有 node1 替换为 node2(直接修改文件内容)。

 

22.history  

怎么在history命令中前面显示日期? 

Linux历史命令history增加执行时间显示

方法1:运行下面命令为当前用户临时设置 HISTTIMEFORMAT 变量。这会一直生效到下次重启。

# export HISTTIMEFORMAT='%F %T '
[localhost ~]$ export HISTTIMEFORMAT='%F %T '
[localhost ~]$ history | grep './start.sh'
53   2025-08-25 09:29:36 ./start.sh uat
180  2025-08-25 09:29:36 ./start.sh uat
...
1039 2025-08-26 08:44:11 ./start.sh uat
1041 2025-08-26 08:44:32 ./start.sh uat
1048 2025-08-26 08:50:44 history | grep './start.sh'
  • %F 表示日期(年-月-日)。

  • %T 表示时间(时:分:秒)。

 

 

 

 

 

 

----

 

posted on 2023-10-10 15:00  有点懒惰的大青年  阅读(41)  评论(0)    收藏  举报