发布时间:2025-12-09 16:07:27 浏览次数:13
命令 选项 参数
命令:整条shell命令的主体
选项:会影响会微调整个命令的行为
参数:命令作用的对象
1、自动补全
2、快捷键
1、文件目录结构
2、各个目录的作用各目录详解
输出重定向
方式一:正确输出:> 等价于1> :将目标输出到文件中,会覆盖 >>等价于1>>: 将目标输出到文件中,追加到文件后
方式二:错误输出:2>将错误命令输出到文件中 ,有覆盖作用 ,2>>: 将错误命令输出到文件中 ,追加到文件后*
方式三:&> 不管是正确输出还是错误输出都重定向到一个文件中
实例:
输入重定向
< 或者 0< 将文件中的内容作为CMD的输入
command file2 将 file1 作为 command 的输入,并将 command 的处理结果输出到 file2。
重定向符号<<,这个符号的作用是使用特定的分界符作为命令输入的结束标志,而不使用 Ctrl+D 键。
管道
操作符是:”|”,它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入.
管理命令的输出说明:
tee命令:
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件
xargs命令用法
作用:用作替换工具,读取输入数据重新格式化后输出
1、多行输入单行输出
2、-n选项多行输出 例如:cat /home/ss.txt | xargs -n3 表示以三个字母为一行输出
3、-d选项可以自定义一个定界符 表示以某个字符为界输出
cut命令:
正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut是以每一行为一个处理对象的,提取一列的字段,这种机制和sed是一样的。
剪切依据
cut命令主要是接受三个定位方法:
第一,字节(bytes),用选项-b
第二,字符(characters),用选项-c
第三,域(fields),用选项-f
语法格式
使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
主要参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除。
awk命令讲解
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程:
1、awk使用一行作为输入,并将这一行赋给内部变量$0,每一行也可称为一个记录,以换行符(RS)结束;
2、每行被间隔符:(默认为空格活制表符)分解成字段,每个字段储存在已编好的变量中,从$1开始
3、awk使用print函数打印字段,打印出来的字段以空格分隔,因为$1,$3之间有一个逗号,逗号比较特殊,它映射为另一个内部变量,称为输出字段分隔符OFS,OFS默认为空格
4、awk处理完一行后,将从文件中获取另一行,并将其储存在$0中,覆盖原来的内容,然后将新的字符串分隔成字段并进行处理,该过程将持续到所有行处理完成。
sed命令
sed是一种几乎包括在所有unix平台的轻量级流编辑器,sed主要是用来将数据进行选取,替换,删除,新增的命令。
sed命令详解
命令排序
1、&& || 具备逻辑判断
command1 && command2 只有在command1成功执行后才会执行command2
command1 || command2 在command1没有成功执行时执行command2
2、;(分号)不具备逻辑判断
paste用法:
paste单词意思是粘贴。该命令主要用来将多个文件的内容合并,与cut命令完成的功能刚好相反。
粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。paste将按行将不同文件行信息放在一行。缺省情况下, paste连接时,用空格或tab键分隔新行中不同文本,除非指定-d选项,它将成为域分隔符。
paste格式为:
paste -d -s -file1 file2
选项含义如下:
-d 指定不同于空格或tab键的域分隔符。例如用@分隔域,使用- d @。
-s 将每个文件合并成行而不是按行粘贴。
join命令用法:
功能说明:将两个文件中,指定栏位内容相同的行连接起来。
rpm相关命令
rpm -ivh 软件包的名字 #安装软件rpm -ql 软件名称 #查看软件包的安装路径rpm -qa 软件名称 #查看软件包名称如果是rpm安装的话可以使用以下命令:rpm -qa | grep 软件名查看软件相关的配置文件,可使用如下命令rpm -qc 软件名,比如:rpm -qc rsyslogyum相关命令:
yum clean all #清理yum缓存yum makecache #缓存软件包信息yum repolist #查询yum源信息yum search 软件名 #查询软件yum provides 软件名 #查看软件属于哪个文件 yum list # yum list显示所有已经安装和可以安装的程序包yum list 软件名 #可以查看相关的软件信息,是否安装如果是yum安装的话可以使用yum list installed | grep 软件名日志优先级
日志优先级划分为:7种日志级别代号0-70 debug 有调试信息的,日志信息最多1 info 一般信息的日志,最常用2 notice 最具有重要性的普通条件的信息3 warning 警告级别4 err 错误级别,阻止某个功能或者模块不能正常工作的信息5 crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息6 alter 需要立刻修改的信息7 emerg 内核崩溃等严重信息常见的日志文件(系统、进程、应用程序)
tail -f /var/log/messages 动态查看日志文件的尾部,核心系统日志文件,记录linux操作系统和服务错误信息。
/var/log/secure 是查看记录安全相关的信息、系统登录、与网络连接的信息。
/var/log/dmesg 查看和系统启动的信息。
/var/log/cron 看下crond、at进程产生的日志。
/var/log/yum.log 查看yum日志
通过rpm -qc 加程序名字可以查看配置文件地址
rsyslog程序,维护配置文件
升级:yum update rsyslog
配置文件: /etc/rsyslog.conf
规则:设备.级别 文件
日志轮转的配置文件有哪些?
/etc/logrotate.conf/etc/logrotate.d/*cd /etc/rsyslog.confcd /etc/logrotate.d/var/log/ppp/connect-errors {missingokcompressnotifemptydailyrotate 5create 0600 root rootprerotate#中间写命令,表示在日志轮转之前做的动作endscriptpostrotate#中间写命令,表示日志轮转之后要做的动作endscript}#create 创建 0600 权限 root 属主 root属组#rotate 保留5份#daily 每天#compress 是否压缩#missingok 丢失无所谓#notifempty 空文件不轮转写完配置文件用 logrotate /var/logrotate.d/检查配置文件是否写错注意:etc/rsyslog.conf中的配置文件配置一些日志的存放地点,logrotate.d中的配置文件说明日志的轮转策略,毕竟日志不会一直保存,占用系统资源
网络管理
目录:/etc/sysconfig/network-scriptsTYPE=Ethernet //网络类型:Ethernet以太网BOOTPROTO=none //引导协议:自动获取dhcp、static静态、none不指定DEFROUTE=yes //启动默认路由IPV4_FAILURE_FATAL=no //不启用IPV4错误检测功能IPV6INIT=yes //启用IPV6协议IPV6_AUTOCONF=yes //自动配置IPV6地址IPV6_DEFROUTE=yes //启用IPV6默认路由IPV6_FAILURE_FATAL=no //不启用IPV6错误检测功能NAME=eno16777736 // 网卡设备的别名UUID=90528772-9967-46da-b401-f82b64b4acbc //网卡设备的UUID唯一标识号DEVICE=eno16777736 // 网卡的设备名称ONBOOT=yes //开机自动激活网卡DNS1=6.6.6.6 //DNS域名解析服务器的IP地址IPADDR=192.168.1.199 //网卡的IP地址PREFIX=24 //子网掩码GATEWAY=192.168.1.1 //默认网关IP地址IPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPADDR=192.168.2.2 #你想要设置的固定IP,理论上192.168.2.2-255之间都可以,请自行验证;NETMASK=255.255.255.0 #子网掩码,不需要修改;GATEWAY=192.168.2.1 #网关,这里是你在“2.配置虚拟机的NAT模式具体地址参数”中的设置完以后需要重启网卡:systemctl restart nwtwork主机名
hostname 可以查看当前服务器的主机名hostname +名字 可以临时更改主机名字,重启后失效hostnamectl set-hostname 可以永久更改主机名vim /etc/hostname 可以在此文件下直接更改更改后可以通过reboot或者init 6 重启查看ip
ip a 可以查看所有的ip信息 ip route可以查看网关ip addr也可以查看ip信息ping 命令可以查看能不能ping通 ,测试网络是否通畅。ping命令
ping命令用于:确定网络和各外部主机的状态;跟踪和隔离硬件和软件问题;测试、评估和管理网络。如果主机正在运行并连在网上,它就对回送信号进行响应。每个回送信号请求包含一个网际协议(IP)和 ICMP 头,后面紧跟一个 tim 结构,以及来填写这个信息包的足够的字节。缺省情况是连续发送回送信号请求直到接收到中断信号(Ctrl-C)。
命令参数:
traceroute命令
作用:通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
.命令参数:
route命令
功能:route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由
1、destination:表示目的的网络或者目的的IP地址,Gateway:指定的网关,Genmask:掩码,比如:上面第三行显示,掩码是24位,目的网络是10.20.48.0,所以如10.20.48.12这类的地址就是走的这个网关,Flags:是一种标识,U:used表示被使用,G:表示Gateway,H:host指的是目的地址不是一个网络而是一个精确的ip,iface:是通过哪个网卡与外部进行通信。
2、default:表示当你访问一个ip时候,它在所以路由信息中都不匹配的时候就会走default,gateway:当显示0.0.0.0或者*号(不同系统显示不一样)时候表示不指定网关,Genmask:掩码显示0.0.0.0,表示不指定掩码,那就是所有ip都可以走,掩码主要看掩了多少位,主要确定不同网段地址
可以参考:https://www.cnblogs.com/peida/archive/2013/03/05/2943698.html
常见服务管理操作
systemctl list-units #列举出所有服务systemctl start 服务名 #启动一个服务systemctl restart 服务名 #重启一个服务systemctl stop 服务名 #停止一个服务systemctl enable 服务名 #设置为开机自启systemctl disalble 服务名 #关闭开机自启服务systemctl reload 服务名 #重新加载服务systemctl status 服务名 #查看当前服务状态正则表达式与通配符
正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配,grep、awk、sed等命令可以支持正则表达式
通配符是用来匹配符合条件的文件名,通配符是完全匹配,ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配。
进程管理
ps命令
ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息。
ps 命令的基本格式如下:
top命令
功能:top命令显示当前系统正在执行的进程的相关信息,包括进程ID,内存占用率,CPU使用率等,top命令实现对系统处理器进行实时监测。
top参数详解
free命令
功能:free命令用于显示Linux系统内存的使用情况,包括物理内存(Mem)、交换内存(swap)和内核缓冲区内存(buffer/cache)
磁盘管理
lsblk命令
主分区:一块物理硬盘上可以被独立使用的一部分,一个硬盘最多可以有4个主分区。
扩展分区:为了突破一个物理硬盘只能有4个分区的限制,引入了扩展分区。扩展分区和主分区的地位相当,但是扩展分区本身不能被直接使用,然而可以被继续划分成多个逻辑分区。
逻辑分区:逻辑分区可以有任意多个,但是不能独立存在,多个连续的逻辑分区可做为一个扩展分区。一个硬盘只能有一个扩展分区。
总结:也就是说,在一个物理硬盘上主分区和扩展分区加在一起最多仍然只有4个。但是扩展分区可以继续被划分成逻辑分区,而对多数用户而言,其实主分区和逻辑分区在使用上是没什么区别的。这样就达到了一快硬盘几乎可以有无限个分区的目的
正则表达式
元字符:
指那些在正则表达式中具有特殊意义的专用字符,如:. * ?
前导字符:
位于元字符前面的字符,如abc* 中的c,aooo.中的o
正则表达式中的常用元字符,具体功能如下:
source命令
source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。
功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录,我任务这是个主要作用,然配置文件在当前shell中立即生效
用法:
source filename 或 . filename
source命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称。
source filename 与 sh filename 及./filename执行脚本的区别在那里呢?
1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export让其成为环境变量,且通过source执行脚本才会使export生效,(这里说的为啥需要source才可以,因为source是在本shell中执行,所以其子shell也可以继承父shell的变量,但是通过sh finename即使是export,但其会再生成一个shell去执行,所以在本shell中的子shell无法继承执行filename中shell的环境变量,简单理解成本shell的子shell跟执行finename的shell的子shell非同一个shell)
3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面,
export
将局部变量申明为环境变量
用法如:export JAVA_HOME=/opt/jdk,通过export创建的环境变量在子shell中可以被引用,但是无法带回上级shell中
解决:比如脚本为run.sh,如果执行./run.sh是不生效的,要执行source ./run.sh,文件中export的环境变量才能生效。
cpu信息
关于计算机中CPU的计算,主要通过以下几个命令查看
物理CPU
物理CPU就是计算机上实际配置的CPU个数。在linux上可以打开cat /proc/cpuinfo 来查看,其中的physical id就是每个物理CPU的ID,你能找到几个physical id就代表你的计算机实际有几个CPU。在linux下可以通过指令 /proc/cpuinfo | grep ‘physical id’查看
cpu核数
核数就是指CPU上集中的处理数据的cpu核心个数,单核指cpu核心数一个,双核则指的是两个。通常每个CPU下的核数都是固定的,比如你的计算机有两个物理CPU,每个CPU是双核,那么计算机就是四核的。linux的cpu核心总数也可以在/proc/cpuinfo里面通过指令cat /proc/cpuinfo查看的到,其中的core id指的是每个物理CPU下的cpu核的id,能找到几个core id就代表你的计算机有几个核心。也可以使用指令cat /proc/cpuinfo | grep “cpu cores”查看
逻辑CPU
操作系统可以使用逻辑CPU来模拟出真实CPU的效果。在之前没有多核处理器的时候,一个CPU只有一个核,而现在有了多核技术,其效果就好像把多个CPU集中在一个CPU上。当计算机没有开启超线程时,逻辑CPU的个数就是计算机的核数。而当超线程开启后,逻辑CPU的个数是核数的两倍。实际上逻辑CPU的数量就是平时称呼的几核几线程中的线程数量,在linux的cpuinfo中逻辑CPU数就是processor的数量。可以使用指令cat /proc/cpuinfo | grep “processor” 查看
知道上面这些,常说的几核几线程就好理解了。假设计算机有一个物理CPU,是双核的,支持超线程。那么这台计算机就是双核四线程的。
所以两路(两路指的是有两个物理CPU)四核超线程就有2x4x2=16个逻辑CPU。有人也把它称之为16核,实际上在linux的/proc/cpuinfo中查看只有8核。
linux系统中的变量文件
1、每个用户都有自己的环境变量配置文件,~/.bash_profile ~/.bashrc,且以个人配置文件,优先加载变量,读取以个人的优先生效。
2、当你需要给所有用户使用这个变量的话,就要写入全局/etc/profile
谈谈shell编程中的那些括号们
**条件测试常用的语法如下**语法1:test <测试表达式>说明:这是利用test命令进行条件测试表达式的方法,test命令和“<测试表达式>”之间至少有一个空格语法2:[ <测试表达式> ]说明:这是通过[](单中括号)进行条件测试表达式的方法,和test命令的用法相同,这是老男孩推荐的方法,[]边界和内容之间至少有一个空格,并且可以使用-a(and),-eq等语法3:[[ <测试表达式> ]]说明:这是通过[[]](双中括号)进行条件测试表达式的方法,是比test,[]命令更新的语法格式,[[]]边界和内容之间至少有一个空格语法4:((<测试表达式>)) 说明:这是通过(())(双小括号)进行条件测试表达式的方法,一般用于if语句,(())两端不用空格,且此时等于等表达不可再用-eq等,而采用数学符号> 、<等**用于计算的那些括号们**语法:(())说明:用于整数常用的运算符,效率很高,可以在“(())”前加$符号,表示将表达式极端后赋值给某个数,例如:num=$((i==i+1))语法:()说明:一个括号的时候不用于计算,主要用于命令的引用,常用于在其前加$(),例如:path=$(pwd),表示当前路径,并把值进行赋值语法:$[]说明:用于整数计算shell中字符串、数字、逻辑比较等
| -n “字符串” | 若字符串的长度不为0,则为真,即测试表达式成立,n可以理解为no zero |
| -z “字符串” | 若字符串的长度为0则为真,即测试表达式成立,z可以理解为zero的缩写 |
| “串1” = “串2” | 若字符串1等于字符串2,则为真,即测试表达式成立,可使用"==“代替”=" |
| “串1” != “串2” | 若字符串1不等于字符串2,则为真,即测试表达式成立,可使用"!==“代替”!=" |
| -eq | ==或者=(equal) |
| -ne | !=(not equal) |
| -gt | >(greater than) |
| -ge | >=(greater equal) |
| -lt | < (less than) |
| -le | <=(less equal) |