Linux命令大全(入门必备)

article/2025/11/7 11:25:17

文章目录

  • 一、查看系统信息
  • 二、日期
    • `将日期存入数组`
  • 三、系统的关机、重启以及登出
  • 四、文件和目录
  • 五、文件搜索
    • `find`
      • 查找重复文件
  • 六、挂载文件系统
    • fuser
  • 七、磁盘
    • `磁盘空间`
    • `磁盘速度`
      • dd命令
  • 八、用户和群组
  • 九、文件的权限
  • 十、文件特殊属性
  • 十一、打包和压缩文件
    • `tar`
    • `zip/unzip`
  • 十二、RPM 包 - (CentOS, Redhat、SUSE)
  • 十三、YUM
    • `13.1.解决Rpmdb checksum is invalid的问题`
  • 十四、DEB 包 (Debian, Ubuntu 以及类似系统)
  • 十五、APT 软件工具 (Debian, Ubuntu 以及类似系统)
  • 十六、查看文件内容
    • `tail -f跟tail -F的区别`
  • 十七、处理文本、字符串
    • `grep`
      • grep -w
    • `sed`
    • `awk`
    • `tr`
    • `sort`
  • 十八、字符设置和文件格式转换
  • 十九、文件系统分析
  • 二十、初始化一个文件系统
  • 二十一、SWAP文件系统
  • 二十二、备份
    • `rsync`
  • 二十三、网络
    • `netstat`
    • `ss`
    • `tcpdump`
  • 二十四、下载上传
    • `wget`
    • `curl`
  • 二十五、监控
    • `nmap`
    • `iostat`
    • `查看进程的启动时间`
  • 二十六、设置系统语言字符集
  • 二十七、定时任务
  • 二十八、进程、端口
    • `pgrep`
    • `lsof`
    • `端口转发`
  • 二十九、ssh
    • `ssh-keygen生成公私钥`
    • `sshpass`
  • 三十、日志
    • `journalctl`
  • 其它


一、查看系统信息

cat /etc/os-release			#查看操作系统信息
cat /proc/version			#查看操作系统信息
cat /etc/issue				#适用于所有的Linux发行版本
uname -m					#显示处理器架构
uname -r					#显示内核版本
uname -a					#查看内核信息
cat /proc/cpuinfo或者用lscpu           #显示CPU info的信息
free -h						#查看内存信息
cat /proc/swaps       		#显示哪些swap被使用
cat /proc/net/dev     		#显示网络适配器及统计
cat /proc/mounts      		#显示已加载的文件系统
localip=$(ifconfig eth0 | grep netmask | tr -s " " | cut -d" " -f3)		#网卡IP
mem=$(free |grep Mem |tr -s " " | cut -d" " -f7)		#本机内存剩余容量

dmidecode -q #显示硬件系统部件 - (SMBIOS / DMI)
在这里插入图片描述
hdparm -tT /dev/sda #在磁盘上执行测试性读取操作
在这里插入图片描述

二、日期

cal 2020          #显示2020年的日历表
date -s "2020-11-20 14:53:05"		#修改系统时间
clock -w          #将时间修改保存到 BIOS
date "+%Y-%m-%d %H:%M:%S"		#格式化显示时间
date -d -15days "+%Y%m%d"		#15天前的日期

将日期存入数组

declare -a DATE=(`date +"%S %M %k %d %m %Y"`)
echo ${DATE[*]}

三、系统的关机、重启以及登出

init 0            			  #关闭系统
shutdown -h hours:minutes &   #按预定时间关闭系统
shutdown -c       			  #取消按预定时间关闭系统
reboot   					  #重启
logout或者exit   			  #注销,登出当前用户

四、文件和目录

cd ..       #返回上一级目录
cd          #进入个人的主目录,如果是root用户,则等价于cd /root
cd ~dev		#进入dev用户的主目录
cd -        #返回上次所在的目录
pwd         #显示当前所在路径

dirname /etc/hosts #去除最后的文件或目录
basename /etc/hosts #保留最后的文件或目录
在这里插入图片描述

ls -l   		#显示文件和目录的详细信息
ls -A   		#显示隐藏文件
ls -hl			#人性化显示文件的大小
ls -R /etc		#递归显示目录的所有内容
ls -t			#按时间排序
ls /var/log/ -lR | grep "^-" | wc -l	#查看/var/log目录下文件数
ls -tl /tmp | egrep -v '(^d|^total)' | head -n1 | awk '{print $9}'		#列出最新的文件名echo "123" > f1				   #覆盖重定向。f1不存在,则创建,并写入123;f1存在,则覆盖原有的内容,并写入123
echo "123" >> f1			   #追加重定向。f1不存在,则创建,并写入123;f1存在,则在原有的内容后面追加123mkdir dir1 dir2    		  #同时创建两个目录
mkdir -p /tmp/dir1/dir2   #创建一个目录树,如果没有/tmp/dir1,也能成功创建
rm -f /tmp/t1.txt		  #删除文件
rm -rf dir1    			  #删除整个dir1目录
mv t1.txt	/tmp/		  #移动文件t1.txt到/tmp目录下
mv t2/.[^.]* t1/		  #移动隐藏文件
mv dir1 /tmp/dir2		  #如果/tmp/dir2存在,则把dir1目录移动到dir2下;如果不存在,则把dir1目录移动到/tmp下并改名字为dir2cp file1 file2     		  #复制一个文件
\cp file1 file2			  #跳过cp别名,如果file2存在,会强制覆盖
cp dir/* .        		  #复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 .   	  #复制一个目录到当前工作目录ln file1 lnk1     		  #创建一个指向文件或目录的物理链接

ln -sv file1 lnk1 #创建一个指向文件或目录的软链接,并显示出来
在这里插入图片描述

stat t.txt							#查看文件或者目录的时间戳
touch -t 202011211500 t.txt			#修改文件或者目录的时间戳tree         						#显示文件和目录由根目录开始的树形结构
tree -N dir1						#支持显示中文
tree -p dir1						#显示权限
tree -ug dir1						#显示所有者和所属组
alias tree='tree --charset ASCII'	#解决乱码问题

五、文件搜索

find

find 命令这 7 种高级用法,你肯定没用过?

find / -name file1     #从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1     #搜索属于用户 'user1' 的文件和目录
find /home/user1 -name \*.bin        #在目录 '/home/user1' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100    #搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10     #搜索在10天内被创建或者修改过的文件
find / -name \*.rpm -exec chmod 755 '{}' \;      #搜索以 '.rpm' 结尾的文件并修改其权限
find / -xdev -name \*.rpm        #搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
find / -perm -u+s          		 #罗列一个系统中所有使用了SUID控制的文件
find temp/ -type f -name "*.groovy" -o -name "*.sh" | xargs -i dos2unix {}	#-o可以匹配多个名字

查找重复文件

Linux 查找重复文件方法汇总

find -not -empty -type f -printf "%s\n" | sort -rn |uniq -d |xargs -I{} -n1 find -type f -size {}c -print0 |xargs -0 md5sum |uniq -w32 --all-repeated=separate |cut -b 35-

解释:

find是查找命令;-not -empty是要寻找非空文件;-type f是指寻找常规文件;%s表示的是文件的大小,单位为bytes,\n是换行符
sort是排序,-n是指按大小排序,-r是指从大到小排序(逆序reverse)
uniq是把重复的只输出一次,而-d指只输出重复的部分(如9出现了5次,那么就输出1个9,而2只出现了1次,并非重复出现的数字,故不输出)。
xargs -I{} -n1,xargs命令将之前的结果转化为参数,供后面的find调用,其中-I{}是指把参数写成{},而-n1是指将之前的结果一个一个输入给下一个命令。后半部分是find -type f -size {}c -print0,-size{}是指找出大小为{}bytes的文件,而-print0则是为了防止文件名里带空格而写的参数。
xargs -0表示读取参数的时候以null为分隔符读取。后面的md5sum是指计算输入的md5值。
sort是排序
uniq -w32是指寻找前32个字符相同的行,原因在于md5值一定是32位的,而后面的--all-repeated=separate是指将重复的部分放在一类,分类输出
由于我们的结果带着md5值,不是很好看,所以我们截取md5值后面的部分,cut是文本处理函数,这里-b 35-是指只要每行35个字符之后的部分。

在这里插入图片描述

locate \*.sh      #寻找以 '.sh' 结尾的文件,效率高于find- 先运行 'updatedb' 命令
whereis ls			#显示一个二进制文件、源码或man的位置
which ls			##显示一个二进制文件或可执行文件的完整路径

六、挂载文件系统

fuser

选项含义
-mname 指定一个挂载文件系统上的文件或者被挂载的块设备
-v详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel. -V 输出版本号
-k杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。
-nspace 指定一个不同的命名空间.支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口, 可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)。
fuser -mv /dev/sda2			#查看哪个用户的哪个进程占用/dev/sda2
fuser -km /mnt/hda2         #当设备繁忙时强制卸载
fuser -v -n tcp 80  		#查看那些程序使用tcp的80端口 
mount /dev/sdb1	/data		#挂载到/data目录,需确保/data目录存在
umout /data					#卸载/data目录上的挂载
umount -n /mnt/hda2         #运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用
mount -o loop file.iso /mnt/cdrom    		#挂载一个文件或ISO镜像文件
mount -t nfs 192.168.1.1:/data01 /data		#挂载NFS存储到本地的/data目录

七、磁盘

磁盘空间

ls -lShr |more    		#以尺寸大小排列文件和目录
du -sh dir1      		#估算目录 'dir1' 已经使用的磁盘空间'
du -sk * | sort -rn     #以容量大小为依据依次显示文件和目录的大小
du -h -d 2|grep [GT] |sort -nr	#查找磁盘目录大小(深度为2),并排序
du -d1 -h /var/lib/docker/containers | sort -h	#显示哪些容器目录占用空间最大

磁盘速度

dd命令

dd测试磁盘读写速度

dd if=/dev/zero of=/opt/bigfile count=512 bs=1M		#生成一个512M的文件

八、用户和群组

groupadd group_name   	#创建一个新用户组
groupmod -n new_group_name old_group_name   #重命名一个用户组
userdel -r user1  				 #删除用户和其主目录
usermod -s /bin/nologin user1    #修改用户属性
usermod -aG root zhangsan		#追加zhangsan到root组
gpasswd -d zhangsan root		#将zhangsan从root组中删除echo “user1:pwd” |chpasswd		 #非交互式修改用户密码
passwd user1  					 #修改一个用户的口令 (只允许root执行)
chage -E 2005-12-31 user1    	 #设置用户口令的失效期限
pwck     						 #检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户

useradd -g dev -G ops -s /bin/bash -d /home/user1 -m user1

-g		#指定基本组
-G		#指定附加组
-s		#指定解释器
-d		#指定主目录,不存在会自动创建
-m		#指定用户名

九、文件的权限

ls -l    #显示权限
chmod 777 directory1		#设置目录权限为777
chmod o-rwx directory1      #删除其他人(o)对目录的读写执行权限
chown user1.user1 file1     #改变一个文件的所有者和所属组为user1
chown -R user1 directory1   #递归改变整个目录的所有者属性
chgrp group1 file1          #改变文件的所属组
chmod u+s /bin/file1        #设置一个二进制文件的 SUID 位
chmod g+s /home/public      #设置一个目录的SGID 位
chmod o+t /home/public      #设置一个文件的 沾滞位

十、文件特殊属性

chattr +a file1   #只允许以追加方式读写文件
chattr +c file1   #允许这个文件能被内核自动压缩/解压
chattr +C file1	  #不会进行写入时复制更新.对目录没有影响,但在该目录中创建的新文件会设置No_COW属性。
chattr +d file1   #在进行文件系统备份时,dump程序将忽略这个文件
chattr +i file1   #设置成不可变的文件,不能被删除、修改、重命名或者链接
chattr +s file1   #允许一个文件被安全地删除
chattr +S file1   #一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
chattr +u file1   #若文件被删除,系统会允许你在以后恢复这个被删除的文件
lsattr            #显示特殊属性

十一、打包和压缩文件

tar

选项含义
-ptar进行解压后,生成的文件的权限,直接取自tar包里面文件的权限,如果不加-p,还要与umask值进行位运算。对root用户无效
gzip -9 file1       		 #最大程度压缩
tar zcvf archive.tgz dir1    #创建一个gzip格式的压缩包
tar zcvf archive.tgz dir1 --remove-files	 #打包后删除源文件
tar -tf archive.tgz   		 #显示一个包中的内容
tar xvf   archive.tgz -C /tmp		 #解压到指定目录,默认为当前目录
tar zcvf archive.tgz --exclude=*.zip ./*	#排除以.zip结尾的所有文件

zip/unzip

zip -r file1.zip file1 file2 dir1    #将几个文件和目录同时压缩成一个zip格式的压缩包
zip -rm file1.zip file1				 #压缩之后删除file1
unzip -q file1.zip   			 	 #静默解压
unzip -o file1.zip					 #强制覆盖	

十二、RPM 包 - (CentOS, Redhat、SUSE)

rpm -ivh package.rpm    		 #安装一个rpm包
rpm -ivh --nodeeps package.rpm   #安装一个rpm包而忽略依赖关系警告
rpm -ivh package.rpm --force	 #强制安装
rpm -e package_name.rpm   		 #删除一个rpm包
rpm -qa | grep httpd    		 #显示所有名称中包含 "httpd" 字样的rpm包
rpm -qi package_name    		 #获取一个已安装包的特殊信息
rpm -ql package_name       		 #显示一个已经安装的rpm包提供的文件列表
rpm -qc package_name       		 #显示一个已经安装的rpm包提供的配置文件列表
rpm -q package_name --whatrequires     #显示与一个rpm包存在依赖关系的列表
rpm -q package_name --scripts          #显示在安装/删除期间所执行的脚本
rpm -qf /etc/httpd/conf/httpd.conf     #确认所给的文件由哪个rpm包所提供
rpm --import /media/cdrom/RPM-GPG-KEY  #导入公钥数字证书
rpm --checksig package.rpm      	   #确认一个rpm包的完整性
rpm -V package_name    				   #检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间
rpm -e package_name --noscripts		#删除rpm包的时候不调用卸载脚本,使用软件包已经损坏的情况

十三、YUM

yum install package_name             #下载并安装一个rpm包
yum localinstall package_name.rpm    #将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系
yum update    						 #更新当前系统中所有安装的rpm包
yum makecache fast					 #更新yum软件包索引
yum update package_name              #更新一个rpm包
yum remove package_name        		 #删除一个rpm包
yum autoremove package_name			 #卸载这个包和它依赖的所有rpm包
yum list                   			 #列出当前系统中安装的所有包
yum search package_name     		 #在rpm仓库中搜寻软件包
yum clean packages          		 #清理rpm缓存删除下载的包
yum clean all                		 #删除所有缓存的包和头文件
yum downgrade glibc.x86_64 			 #降低软件包的版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes	#通过kubernetes YUM仓库查找kubeadm版本
yum repolist -e 0					#列出yum仓库,-e指定错误级别为0

13.1.解决Rpmdb checksum is invalid的问题

rpm --rebuilddb			#重建数据库

十四、DEB 包 (Debian, Ubuntu 以及类似系统)

dpkg -i package.deb     #安装/更新一个 deb 包
dpkg -r package_name    #从系统删除一个 deb 包
dpkg -l | grep httpd    #显示所有名称中包含 "httpd" 字样的deb包
dpkg -s package_name    #获得已经安装在系统中一个特殊包的信息
dpkg -L package_name    #显示系统中已经安装的一个deb包所提供的文件列表
dpkg --contents package.deb    #显示尚未安装的一个包所提供的文件列表
dpkg -S /bin/ping              #确认所给的文件由哪个deb包提供

十五、APT 软件工具 (Debian, Ubuntu 以及类似系统)

apt-get install package_name      #安装/更新一个 deb 包
apt-cdrom install package_name    #从光盘安装/更新一个 deb 包
apt-get update      #升级列表中的软件包
apt-get upgrade     #升级所有已安装的软件
apt-get remove package_name     #从系统删除一个deb包
apt-get check     #确认依赖的软件仓库正确
apt-get clean     #从下载的软件包中清理缓存
apt-cache search searched-package    #返回包含所要搜索字符串的软件包名称

十六、查看文件内容

tail -f跟tail -F的区别

tail -f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止tail -F 等同于--follow=name  --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
cat file1      	#从第一个字节开始正向查看文件的内容
tac file1      	#从最后一行开始反向查看一个文件的内容
more file1      #查看一个长文件的内容
head -2 file1   #查看一个文件的前两行,默认为前10行
tail -2 file1   #查看一个文件的最后两行
tail -n +2		#从第2行开始显示
tail -f /var/log/messages     #实时查看文件中的内容

十七、处理文本、字符串

grep

grep -w

完全匹配数字和单词

grep -w '^FROM' Dockerfile	   #精确匹配以FROM开头的行
#以下情况需注意:
echo "/data/docker/overlay" | grep -w '/data/docker'

在这里插入图片描述
因为’/'不是数字也不是单词,因此不会影响匹配。
而要精确匹配/data/docker应该写成下面这种

echo "/data/docker/overlay" | grep -w '/data/docker$'
grep -r '192.168.137.2' /etc/  #查找/etc/下所有包含“192.168.137.2”的文件grep -q '^SE[0-9]+$' f1		   #匹配结果不输出到屏幕;[0-9]包含0~9,+匹配至少一次;$匹配字符串结尾
grep -c localhost /etc/hosts   #统计匹配结果的行数
grep '^$' f1				   #过滤文件空白行
grep 'i\b' /etc/passwd		   #匹配i结尾的单词;\b为边界字符
grep '\w' /etc/passwd		   #匹配所有字母、数字、下划线
grep -o '^root' /etc/passwd	   #仅显示匹配的内容,不显示全行所有内容
grep -A3 '^root' /etc/passwd	   #打印匹配内容和其后三行
echo 21 | grep -P "\d"		   #\d,数字字符匹配,等效于 [0-9],与\D互反
grep -n "enable:" f1		   #打印匹配到的行号
grep -E 					   #支持扩展正则,等同于egrep

sed

Linux神兵利器—sed命令详解

awk

awk命令详解

tr

语法:
tr [选项] 数据集1 [数据集2]
数据集1是必需的,选项和数据集2是可选的

选项功能描述
-s删除连续的多个重复的数据
-d删除包含特定集合的数据
-c使用数据集1的差集
[root@localhost ~]# echo "hello world" | tr 'a-z' 'A-Z'		#小写转大写
HELLO WORLD
[root@localhost ~]# echo "hello world" | tr l 9		#所有的l替换为9
he99o wor9d
[root@localhost ~]# tr 'a-z' 'A-Z' < /etc/passwd	#从标准输入读取数据
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
[root@localhost ~]# echo 'aaa' | tr -s a			#删除连续重复的a
a
[root@localhost ~]# echo 'aaabbb' | tr -s ab		#删除重复的a和b
ab
[root@localhost ~]# echo 'hello world' | tr -d 'l'	#删除所有的l
heo word
[root@localhost ~]# echo 'hello world' | tr -d 'hl'	#删除所有的h和l
eo word
[root@localhost ~]# echo 'hello world' | tr -d 'a-e'	#删除包含a-e的所有字母
hllo worl[root@localhost ~]# echo 'hello world' | tr -cd 'o'		#只保留o
oo[root@localhost ~]#
[root@localhost ~]# echo 'hello 666' | tr -cd a-z		#仅保留小写字母
hello[root@localhost ~]# echo 'hello 666' | tr -cd '0-9\n'	#保留数字和换行
666
[root@localhost ~]# echo 'hello666' | tr -c '0-9' x		#将数字外的符号替换为x
xxxxx666x[root@localhost ~]#echo "    false" | tr -s ' ' | cut -d ' ' -f2	#去掉前面空格。cut -d以空格分隔,打印第二列

sort

cat update_file.txt | sort -u -o update_file.txt	#去重后再写入到原文件
sort file1 file2 | uniq      	 #取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u   	 #删除交集,留下其他的行
sort file1 file2 | uniq -d   	 #取出两个文件的交集
paste file1 file2           	#合并两个文件或两栏的内容
paste -d '+' file1 file2    	#合并两个文件或两栏的内容,中间用"+"区分comm -1 file1 file2    #比较两个文件的内容只删除 'file1' 所包含的内容
comm -2 file1 file2    #比较两个文件的内容只删除 'file2' 所包含的内容
comm -3 file1 file2    #比较两个文件的内容只删除两个文件共有的部分

十八、字符设置和文件格式转换

dos2unix filedos.txt fileunix.txt      #将一个文本文件的格式从MSDOS转换成UNIX
unix2dos fileunix.txt filedos.txt      #将一个文本文件的格式从UNIX转换成MSDOS
recode ..HTML < page.txt > page.html   #将一个文本文件转换成html
recode -l | more                       #显示所有允许的转换格式

十九、文件系统分析

badblocks -v /dev/hda1    #检查磁盘hda1上的坏磁块
fsck /dev/hda1            #修复/检查hda1磁盘上linux文件系统的完整性
e2fsck -j /dev/hda1       #修复/检查hda1磁盘上ext3文件系统的完整性
fsck.ext4 /dev/hda1       #修复/检查hda1磁盘上ext4文件系统的完整性

二十、初始化一个文件系统

mkfs.ext4 /dev/sdb1		#格式化磁盘
mkfs -t vfat 32 -F /dev/hda1   #创建一个 FAT32 文件系统

二十一、SWAP文件系统

mkswap /dev/hda3             #创建一个swap文件系统
swapon /dev/hda3             #启用一个新的swap文件系统
swapoff /dev/hda3             #取消swap文件系统
swapoff -a				#关闭所有swap文件系统

二十二、备份

rsync

Linux 服务器数据同步利器!

rsync -rogpav --delete /home /tmp    			#同步两边的目录
rsync -avzP /data/dir root@192.168.1.2:/data/	#同步到远程主机
rsync -avzHP  --delete  srchub/ dsthub/			#同步srchub目录的内容到dsthub目录,并删除dsthub有而srchub没有的内容,好比给srchub做了个完整拷贝
rsync -avzP -e "ssh -o StrictHostKeyChecking=no" srchub/ dsthub/	#跳过Authentication (yes/no)
find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 	#查找所有以 '.log' 结尾的文件并做成一个bzip包

二十三、网络

netstat

选项解释
-t显示TCP端口
-u显示UDP端口
-n显示数字地址而不是解析主机
-l仅显示监听端口
-p显示侦听器进程的PID和名称。仅当你以root用户或 sudo 用户身份运行命令时,才会显示此信息
netstat -nutlp

在这里插入图片描述
Active Internet connections,称为有源TCP连接

列名含义
Recv-Q接收队列,通常为0,不为0代表软件包正在队列中堆积
Send-Q发送队列,通常为0,不为0表示软件包正在队列中堆积
Local Address进程侦听的IP地址和端口号
Foreign Address外部连接本机端口的IP和端口
State监听状态
PID/Program namePID和进程名称
netstat已过时,被ss和 ip 取代,但它仍然是检查网络连接的最常用命令。

ss

ss是新的netstat。它缺少netstat的某些功能,但是公开了更多的TCP状态,并且速度稍快。

tcpdump

运维必备服务器抓包–tcpdump详解

tcpdump tcp port 80        #显示所有http协议的流量
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

解释:

(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
ifconfig eth0    #显示一个以太网卡的配置
ifup eth0        #启用一个 'eth0' 网络设备
ifdown eth0      #禁用一个 'eth0' 网络设备
ifconfig eth0 192.168.1.1 netmask 255.255.255.0     #临时设置IP地址
dhclient eth0            #以dhcp模式启用 'eth0'route -n    #查看路由表
route add -net 0/0 gw IP_Gateway    #配置默认网关
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1   #配置静态路由到达网络'192.168.0.0/16'
route del 0/0 gw IP_gateway        #删除静态路由hostname	 			   #查看机器名
nslookup www.example.com   #用于查询DNS的记录
ip link show           	   #查看网卡信息
ip a s					   #查看网卡信息
ethtool                    #用于查询和设置网卡配置ping -c2 -i0.2 -W1 192.168.137.2	#-c设置包的个数,-i设置间隔时间,-W设置超时时间,单位秒

二十四、下载上传

wget

选项含义
-P指定数据下载到特定目录
-c支持断点续传
-q不显示下载过程
–user指定用户名
–password指定密码
-r递归下载
-np不下载父附录
-nd不建立目录,若无此选项,将按照网站目录结构创建目录
wget --user aqx --password 123 -c URL		#-c开启断点续传功能 

curl

选项含义
-L跟随重定向地址
-k跳过证书验证
-o重命名
-O指定要下载的文件URL
-v详细输出,包含请求和响应的首部
-s静默模式,不输出任何信息
-I仅显示HTTP头部信息
–connect-timeout指定尝试连接的最大时长,单位s
-m指定处理的最大时长,单位s
-w完成访问后,返回一些类似的附加信息
curl -k -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
curl -kLO URL
curl -lv URL	
curl -s www.baidu.com > baidu.html	
curl -I www.baidu.com	
curl -m 3  -s -o /dev/null -w %{http_code} www.baidu.com	#返回状态码
curl -o fuck.png URL	#下载文件并重命名curl -LO -# URL	#有进度条和百分比的下载

附加信息表:
在这里插入图片描述

curl --max-time 95 --unix-socket /var/run/docker.sock -X GET http:/v1.23/_ping	#检查Docker状态

二十五、监控

vmstat 2 3		#查看系统资源使用情况。2表示每隔两秒,3表示采样3次。详细内容参考:https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html

nmap

nmap -sP 192.168.137.2			#仅执行ping扫描
nmap -n -sP 192.168.1.0/24		#扫描整个网段;-n禁止DNS反向解析
nmap -n -sT 192.168.1.10~192.168.1.50	#扫描之间所有主机;-T扫描所有TCP端口,并显示哪些端口是开放的
nmap -n -sS -p80 192.168.1.10,20,30		#扫描不连续主机;-S针对TCP的半开扫描;-p指定端口
nmap -n -sS -p100-200 192.168.1.2		#指定多端口
nmap -T5 -n -sU 192.168.137.2			#-T5加快扫描速度;-U扫描UDP端口

iostat

参考文章:linux下iostat命令详解

yum install sysstat -y	#安装iostat的命令
iostat -xm 2	#每隔两秒循环输出信息

在这里插入图片描述

查看进程的启动时间

ps -eo pid,lstart,etime,cmd | grep sshd |grep -v ‘grep’
在这里插入图片描述

10630							#sshd的进程号
Mon Dec  7 10:27:25 2020		#表示该进程于2020年12月7日周一10:27:25启动
1-03:31:34						#代表进程从启动到现在过了1天3小时31分34秒
/usr/sbin/sshd -D				#启动sshd的命名

二十六、设置系统语言字符集

localectl status			#查看当前语言字符集
locale或者echo $LANG		#查看当前语言字符集						
localectl list-locales		#列出所有字符集
export LANG=zh_CN.UTF-8		#临时设置
localectl set-locale "LANG=zh_CN.UTF-8"		#永久设置,重新登录终端方可生效
locale -a 		#列出当前安装的字符集

二十七、定时任务

0 2 * * * find /data/ -type f -mtime +15 -exec rm -rf {} \;	#每天凌晨2点执行删除15天之前文件的操作
0 2 * * * find /data/ -type f -mtime +3 -size +100M -exec rm -rf {} \;	#删除三天之前且文件大小大于100M的数据

二十八、进程、端口

pgrep

pgrep java			#输出java进程的ID号
pgrep -au devops	#查找devops用户运行的进程

lsof

lsof是功能强大的命令行应用程序,可提供有关进程打开的文件的信息
Linux 命令神器:lsof

选项含义
-n不要将端口号转换为端口名称
-p不解析主机名,显示数字地址
-iTCP -sTCP:LISTEN仅显示TCP状态为LISTEN的网络文件
+L1显示所有打开的链接数小于1的文件
-u指定用户名
-p指定进程号
lsof -nP -iTCP -sTCP:LISTEN  	#获取具有lsof的所有侦听TCP端口的列表

在这里插入图片描述

lsof -nP -iTCP:3306 -sTCP:LISTEN	#查找本机侦听3306端口的进程
lsof -i:7070 -t		#获取端口的进程号,如果端口不存在则为空
lsof -u devops		#查看用户打开哪些文件
lsof –p  4838		#查看进程打开哪些文件
lsof –i @192.168.34.128		#查看远程已打开的网络连接

端口转发

#8080转发到80
iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 80 -j REDIRECT --to-ports 8080

二十九、ssh

ssh-keygen生成公私钥

-q : 安静模式,一般用在生成密钥上
-N: 生成一个新密钥
-f : 生成密钥的文件路径
-C:指定注释,默认为用户名@主机名

ssh-keygen -q -N "" -f ~/.ssh/id_rsa -C devops

sshpass

sshpass -p 密码 scp -o StrictHostKeyChecking=no 本机文件路径 root@远程机器IP:远程路径
sshpass -p 密码 rsync -avzP -e "ssh -o StrictHostKeyChecking=no" 本机文件路径 root@远程机器IP:远程路径
sshpass -p 密码 ssh -o StrictHostKeyChecking=no root@远程机器IP "执行shell命令"

三十、日志

journalctl

journalctl --since="2023-02-20 1:00:00" --until="2023-02-21 11:00:00" -u docker		#查看某个时间范围内的日志
journalctl -u docker		#查看所有日志
journalctl -u docker -f		#动态查看日志
journalctl --since="2022-03-04 10:00:00" -u docker	#查看指定日期日志

参考文章:linux命令之journalctl —— 筑梦之路

其它

参考文章
PS:感谢作者的精心整理,我后面也会不断把常用的命令整理进来,以供各位同仁参考。


http://chatgpt.dhexx.cn/article/ymscwDZY.shtml

相关文章

Java并发工具 JUC 包介绍

1. 前言 java.util.concurrent &#xff08;缩写 JUC&#xff09;并发编程包是专门为 Java 并发编程设计的&#xff0c;在正式介绍 Java 并发工具之前&#xff0c;本节先带领大家认识 Java 并发工具包&#xff0c;对 Java 并发工具在组织形式上有一个直观的认识。 本节先介绍…

JAVA并发机制的底层实现原理

JAVA代码在编译后会变成字节码&#xff0c;字节码被类加载器加载到JVM中&#xff0c;JVM执行字节码&#xff0c;最终需要转化为汇编指令在CPU上执行&#xff0c;JAVA中所使用的并发机制依赖于JVM的实现和CPU的指令。 ->参考《JAVA并发编程的艺术》 1.volatile的应用 volat…

【2022最新Java面试宝典】—— Java并发编程面试题(123道含答案)

目录 一、基础知识1. 为什么要使用并发编程2. 多线程应用场景3. 并发编程有什么缺点4. 并发编程三个必要因素是什么&#xff1f;5. Java 程序中怎么保证多线程的运行安全&#xff1f;6. 并行和并发有什么区别&#xff1f;7. 什么是多线程8. 多线程的好处9. 多线程的劣势&#x…

【JAVA并发】二、JAVA是如何解决并发问题的

上文提到了并发产生的原因&#xff0c;那么JAVA给出的解决方案是什么呢&#xff0c;我们来一起探讨一下。 一、解决缓存导致的并发问题 针对于这个问题&#xff0c;原因主要是各个缓存之间的数据可见性的问题。那么解决这个问题的最简单粗暴的思路就是禁用缓存。 试想一下&am…

java并发编程Future类详解

作用和举例 future类的作用就是为了调用其他线程完成好后的结果&#xff0c;再返回到当前线程中&#xff0c;如上图举例&#xff1a; 小王自己是主线程&#xff0c;叫外卖等于使用future类&#xff0c;叫好外卖后小王就接着干自己的事去了&#xff0c;当外卖到了的时候&#x…

Java并发工具CountDownLatch使用详解

本文目录 1、使用场景2、使用介绍3、使用案例4、 Thread.join()和CountDownLatch的区别 1、使用场景 通过使用 CountDownLatch可以使当前线程阻塞&#xff0c;等待其他线程完成给定任务。可以类比旅游团导游要等待所有的游客到齐后才能去下一个景点。 CountDownLatch 主要应用…

Java 并发编程(一):简介

这篇文章的标题原本叫做——Java 并发编程(一)&#xff1a;简介&#xff0c;作者名叫小二。但我在接到投稿时觉得这标题不够新颖&#xff0c;不够吸引读者的眼球&#xff0c;就在发文的时候强行修改了标题&#xff08;也不咋滴&#xff09;。 小二是一名 Java 程序员&#xff…

Java并发编程的艺术下载

本书简介 并发编程领域的扛鼎之作&#xff0c;作者是阿里和1号店的资深Java技术专家&#xff0c;对并发编程有非常深入的研究&#xff0c;《Java并发编程的艺术》是他们多年一线开发经验的结晶。本书的部分内容在出版早期发表在Java并发编程网和InfoQ等技术社区&#xff0c;得…

Java并发工具之Semaphore

一、简介 摘自《Java并发编程的艺术》一书 Semaphore&#xff08;信号量&#xff09;是用来控制同时访问特定资源的线程数量&#xff0c;它通过协调各个线程&#xff0c;以保证合理的使用公共资源。 Semaphore一般用于流量的控制&#xff0c;特别是公共资源有限的应用场景。例…

Java 并发编程实战-创建和执行任务的最佳实践

若无法通过并行流实现并发&#xff0c;则必须创建并运行自己的任务。运行任务的理想Java 8方法就是CompletableFuture。 Java并发的历史始于非常原始和有问题的机制&#xff0c;并且充满各种尝试的优化。本文将展示一个规范形式&#xff0c;表示创建和运行任务的最简单&#x…

java并发-java并发大师

文章目录 java并发大师James GoslingDoug Lea 参考 java并发大师 聊聊java&#xff08;十&#xff09;Java并发大师Brain Goetz和Doug Lea 的中英文博客文章地址 参考URL: https://blog.csdn.net/weixin_33963594/article/details/92481739 James Gosling 技术大牛收割机&am…

java并发编程之 并发问题及解决方法

一、并发问题的根源 首先&#xff0c;我们要知道并发要解决的是什么问题&#xff1f;并发要解决的是单进程情况下硬件资源无法充分利用的问题。而造成这一问题的主要原因是CPU-内存-磁盘三者之间速度差异实在太大。如果将CPU的速度比作火箭的速度&#xff0c;那么内存的速度就…

『图解Java并发编程系列』10张图告诉你Java并发多线程那些破事

目录 线程安全问题 活跃性问题 性能问题 有态度的总结 头发很多的程序员&#xff1a;『师父&#xff0c;这个批量处理接口太慢了&#xff0c;有什么办法可以优化&#xff1f;』架构师&#xff1a;『试试使用多线程优化』第二天头发很多的程序员&#xff1a;『师父&#xff…

Java基础-并发篇

3.1. JAVA 并发知识库 3.2. JAVA 线程实现/创建方式 3.2.1. 继承 Thread 类 ​ Thread 类本质上是实现了 Runnable 接口的一个实例&#xff0c;代表一个线程的实例。启动线程的唯一方 法就是通过 Thread 类的 start()实例方法。start()方法是一个 native 方法&#xff0c;它将…

java并发总结

一、并发基础 ㅤ 1、进程与线程 ㅤ 进程 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至 CPU&#xff0c;数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 I…

pytorch 图片分类,python 图片分类,resnet18 图片分类

pytorch 图片分类&#xff0c;python 图片分类&#xff0c;resnet18 图片分类&#xff0c;深度学习 图片分类 pytorch版本&#xff1a;1.5.0cu101 全部源码&#xff0c;可以直接运行。 下载地址&#xff1a;https://download.csdn.net/download/TangLingBo/12598435 网络是…

深度学习图片分类实战学习

开始记录学习深度学习的点点滴滴 深度学习图片分类实战学习 前言一、深度学习二、使用步骤1. 自建网络模型2. 进行深度学习的学习迁移 注意事项 前言 随着人工智能的不断发展&#xff0c;这门技术也越来越重要&#xff0c;很多人都开启了学习人工智能&#xff0c;本人开始记录…

关于图片的多标签分类(1)

最近还在处理人脸附件&#xff08;眼镜&#xff0c;刘海&#xff0c;口罩&#xff0c;帽子&#xff09;的multi-label分类。给自己普及一下常识性问题&#xff1a; 1&#xff09;什么是multi-label分类&#xff1f; multi-label分类&#xff0c;常见一张图片中可以存在多个目…

svm实现图片分类(python)

目录 前言 knn vs. svm svm & linear classifier bias trick loss function regularization optimization 代码主体 导入数据及预处理 svm计算loss_function和梯度 验证梯度公式是否正确 比较运行时间 svm训练及预测&#xff0c;结果可视化 通过corss-validat…

图片分类-python

目的&#xff1a;做一个简易的图片分类。 使用到的算法&#xff1a;hog、surfsvm 图片集&#xff1a;cifar-10、cifar-100、stl-10、自制图片集 分类完整代码链接 使用说明&#xff1a; 1.cifar-10、cifar-100和stl-10直接解压 2.自制图片集文件夹结构&#xff1a; ├…