唐僧喜欢小龙女

导航

linux 命令学习

linux 严格区分大小写

1、linux 目录学习

 

Linux 主要目录速查表
/: 表示根的意思
/bin (binary 二进制的简称) 存放的是一些二进制文件,但是在Linux中 二进制文件是可以被执行的,
这个目录中的命令文件是给普通用户使用(一般是普通用户可以执行,超级管理员也可以执行)例如 ls、cat 等等的命令
二进制 就是逢二进1,就两个数字 0和一。
 
/etc :linux 所有的配置文件都会默认存放到etc目录包括系统的配置文件以及用户自己安装的软件的配置文件
如果不特意制定路径的情况下,都会放到etc 目录下
 
/home: 是所有非root 用户家目录的一个集合。里面可能有好几个用户,比如说windows 下 c盘的用户目录下
有admin 用户和公用目录 linux 的home 目录下一般有admin 用户
     ~ 表示当前用户的家目录
     ~edu表示用户 edu的家目录
 
/root: root 用户的家目录
 
/sbin: 可以理解成 super bin,里面放的也是二进制文件,这些命令只能让超级管理员去运行
 
/usr:存放着一些用户自己安装的软件,其实类似于windows 下的Program Files 目录
 
/var:(variable) 存放着linux 下的一些日志文件,在实际开发的时候有一些公司习惯把apache 或者
nginx 的站点目录也会放到这个目录中
/mnt 用来挂载文件的
/opt 给主机额外安装的软件所摆放的位置

 

2、常见的简单命令

2.1 ls的命令学习

ls -l
表示以列表的形式列出指定路径下的文件夹和文件的名字

ls -la 
a的意思是all的意思
表示以列表的形式列出指定路径下的文件夹和文件的名字(包含隐藏的文件,特点是以.开头的名字 或者两个.开头的)

ls -lrt
r的意思是反向排序,倒序输出
t的意思是时间
表示 按修改时间 倒序 列出当前工作目录下的所有文件的详细信息

ls -l命令输出结果说明

文件的权限
	1、读(r)  2、写(w)  3、执行(x)。每一个用户用不同的对文件操作的权限。
	ls -l 命令输出的结果整理
		输出结果第一列共10 个小列,其中第一个小列单独一组,后面的9个每三个分一组。
		例如drwxrwxr-x。
		第三列和第四列表示用户名称和组名称。

		drwxrwxr-x 分析
		d表示 该项是文件夹。rwx表示该用户对该文件的权限是读写和执行。第二小组rwx 表示当前用户所在的用户组对该文件夹的权限是读写和执行。最后r-x表示其他用户对该文件夹的权限
	2、硬连接的含义
		通俗的讲,就是有多少种方式,可以访问到当前目录/文件。知道就行 没啥卵用	

2.2 cd 命令

用来切换目录的(change directory)
路径可以写也可以不写,不写的话就切换到当前用户的家目录,例如是root 用户就切换到/root目录下。

2.3 su命令

su
  用来切换用户的 (switch user)
   su+用户名 如果不写就是切换到root 用户

2.4 top命令

主要是Linux系统的性能的,如cpu的利用率内存状态负载磁盘的io情况。

	主要是Linux系统的性能的,如cpu的利用率内存状态负载等。
	top - 14:52:54  当前的系统时间  date 也可以获得当前系统时间

	up 1 day,2:57   此系统已经连续运行的时间

	2 users         系统当前登陆的用户数

	load average:0.00,0.01,0.05   平均负载率,记录了前1、5、15 分钟系统的平均负载,负载率就是使用率:单位时间内cpu的在工作的时间状态
		务必将此值保持在1以下,一般是0.7以下算正常(此值是针对单核处理器制定的,如果是多核要除以核心数)
        获得处理器核心数的命令
			grep 'model name' /proc/cpuinfo | wc -l
        举例说明什么叫负载率和使用率
        	1、菲利普每分钟可以处理2件货物,以30秒为时间片。第一个30秒,凯瑟琳给了一个硝石,飞利浦使用60%的cpu加工成子弹,剩余
        	的30秒飞利浦就休息了。因此在运算时CPU的利用率为60%,1分钟内负载(使用率)为0.5.
        	2、菲利普每分钟可以处理2件货物,以30秒为时间片。第一个30秒,凯瑟琳给了一个硝石,飞利浦使用60%的cpu加工成子弹。之后
        	蒙特祖玛给了菲利普一个棉花,菲利普使用80%的CPU加工成牛仔裤。1分钟内负载为1.0。1分钟内CPU的平均利用率是70%
        	3、利普每分钟可以处理2件货物,以30秒为时间片。同时有4个请求,但是菲利普1分钟内只能等着排队,这时我们的负载为2.0。如果我们是多核
        	CPU那么要除以CPU的核数(如果是2 那么负载是1)

        0.05 就可以理解了
        	15分钟内有5%的时间在工作,剩下的95%的时间在休息,但是不能说cpu的使用率是100%。

        负载产生的原因
        	1、cpu的利用率高,忙不过来
        	2、排队等待的人多。


    Tasks:  253 total,   2 running,   251 sleeping,   0 stopped,   0 zombie ,这里说的是进程信息。
	    253 total 系统现在共有10个进程
	    2 running 处于运行中的进程2个
	    251 sleeping 处于休眠中的进程有251个
	    0 stoped 处于stoped状态的进程有0个
	    0 zombie 处于zombie 状态的有0个

    %Cpu(s):  0.1 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st,CPU的利用率
    	0.1 us 用户模式0.1的cpu在工作  应该小于60%
    	0.3 sy 计算机系统自身的进程所花费的 CPU的时间   us+sy 要小于80%
    	0.0 ni 没啥用
    	99.7 id cpu 处于空闲的时间状态,就是说99.7的cpu是处于空闲状态
    	0.0 wa CPU在I/O读取这里的使用率,I/O 从磁盘读取数据到内存,这个很重要,如果I/O 很高需要查下I/O是不是有问题。
    	剩下的几个没有用



    load average: 0.01, 0.00, 0.00
    %Cpu(s):  0.1 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st  负载和cpu利用率结合起来看问题

	    CPU 负载低 CPU利用率低:CPU资源良好、系统运行正常
	    CPU 负载低 CPU利用率高:确认是否程序有问题,少量进程消耗大量资源
	    CPU 负载高 CPU利用率低:文件IO和网络IO操作较多,IO瓶颈,cpu中很少的一部分一直在工作,剩下的大部分cpu在等待,可以优化磁盘
	    CPU 负载高 CPU利用率高:CPU资源不足


	MiB Mem :   1987.5 total,   1006.7 free,    327.7 used,    653.2 buff/cache
	MiB Swap:   1024.0 total,   1024.0 free,      0.0 used.   1509.0 avail Mem  内存
		MiB Mem:内存信息
		1987.5 total 系统现在共有1987.5 MB的内存
		1006.7 free 空闲的内存有1006.7MB
		327.7 used  被程序占用的内存为327.7MB。
		653.2 buff/cache  磁盘交换或者缓存占用的内存  Centos 单独列出来的两个

        
    MiB Swap: Swap 信息
        1024.0 total 系统现在共有 1024.0MB的Swap 空间
        1024.0 free 空闲的swap 空间有1024.0 MB
        1509.0 avail Mem 表示可用于下一次分配的物理内存数量


    
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND

    PID 	进程号、用来识别进程
    USER 	执行用户
    PR 		进程执行优先级 越低越优先,(人干预不了)
    NI 		执行优先级加权 -20~19(root) 0~19(user) ,这个是不同用户设置的值
    S 		进程的状态  D:死态 这个比较的尴尬如果是D 一般来说要重启应用,kill啥的不行。
    %CPU    CPU利用率
    %%MEM 	内存利用率

2.4.1 linux下用top命令查看cpu利用率超过100%的原因

  这里显示的所有的cpu加起来的使用率,说明你的CPU是多核,你运行top后按大键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来

  

  按下1后可以看到我的机器的CPU是八核的。%Cpu0,%Cpu1

   

3、常见的文件操作命令

3.1 touch 命令 

touch 
	创建文件的
	touch /php2018.txt

3.2 mkdir 指令

mkdir 
    用来创建文件夹
    mkdir sss
    递归创建多个目录 加一个-p的选项
    mkdir -p ss/sab/sd 
    创建目录时如果目录和已有的目录或文件重名时会提示失败

3.3 cp 指令  

cp
    copy 的简写
    复制文件并重命名
    	cp 11.txt /root/tmp/gao.txt
    	cp 11.txt 23.txt
    复制文件不重命名
    	cp 11.txt /root/tmp

    复制文件夹		
	    cp -r: 如果复制的是文件夹 ,则 -r就是必选项。r可以理解成递归的意思
	    cp -r /home/admin/ss /tmp/
	    cp -r /home/admin/ss /root/tmp/wgo 复制文件夹并重命名
    cp -i 覆盖文件前提示的一个作用    

  

  

3.4 删除的指令

rm 
    rm -rf remove的简写,-rf 的意思是递归强制删除 ,删除文件的时候需要用。
    单纯的删除一个文件用rm 就行。 
    如果单使用 rm -r 时,删除的文件不存在 会报错,但是使用rm -rf 就不会报错

  

3.5 mv 的指令 

mv
	移动/剪切/重命名 (move的简称)
    mv 需要操作的文档 新的文档位置
    mv -i 覆盖文件前提示

3.6 echo 命令

linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法
echo
	Linux 重定向的意思: 将本应显示在终端文件上的 内容 输出 / 追加 到指定文件中
	echo hello word 会默认显示在 终端命令上
	> 表示会覆盖文件的原有内容
		echo  hello word > a
	>> 表示会把内容追加到已有文件的末尾
		echo www.baidu.com >> a
		pwd >> a

	echo wwww.baidu.com >> b 这时如果没有b文件,此时会创建b文件。touch 只是创建文件

	-e的选项 可启用转义字符的解析
		echo -e "You know nothing, Jon Snow.\n\t- Ygritte"  换行夹制表符

	显示变量
		echo $USER

	返回当前目录中所有.txt文件的名称
		echo The PHP files are: *.txt

3.7 scp的命令

scp命令
	scp secure copy 是一个在linux下用来进行远程拷贝文件的命令,常见的是把一个服务器上的文件复制到另一个服务器上
	

	示例1:
		把本地桌面上的ssss 文件 复制到 远程服务器的 /usr/local/src 目录下
		scp ssss root@172.16.10.78:/usr/local/src

    示例2:
    	把本地桌面上的demo 文件夹 复制到 远程服务器的 /usr/local/src 目录下
        scp -r demo root@172.16.10.78:/usr/local/src
        这里要使用 -r 的参数。

3.8 文件的权限和修改的命令

    1、读(r)  2、写(w)  3、执行(x)。每一个用户有不同的对文件操作的权限。
    ls -l 命令输出的结果整理
        输出结果第一列共10 个小列,其中第一个小列单独一组,后面的9个每三个分一组。
        例如drwxrwxr-x。
        第三列和第四列表示用户名称和组名称。

        drwxrwxr-x 分析
        d表示 该项是文件夹。rwx表示当前用户对该文件的权限是读写和执行。第二小组rwx 表示当前用户所在的用户组对该文件夹的权限是读写和执行。最后r-x表示其他用户对该文件夹的权限
    2、硬连接的含义
        通俗的讲,就是有多少种方式,可以访问到当前目录/文件。知道就行 没啥卵用

    3、修改当前用户对文件/文件夹的权限
        删除文件的rw 权限
            chmod -rw 11.txt
        添加文件的rw权限
            chmod +rw 11.txt    

        删除文件夹的执行权限
            chmod -x demo 
            非root用户删除了demo文件夹的可执行权限后,对文件的基本操作就没有权限了例如 cd demo等

        递归修改文件权限
            chmod -R 755 目录名
    
    4、用户组操作
        添加用户组
            groupadd 用户组
        删除用户组
            groupdel 用户组
        查看用户组是否添加成功
            cat /etc/group    
    5、修改文件所属的组(ls -l 结果第四列)
        命令chgrp -R 组名 文件/文件夹名称 -R 递归修改 
            chgrp -R devs Python学习
    
    6、linux 系统添加用户名和指定用户名密码以及删除用户
        useradd -m -g 用户组 用户名称
            useradd -m -g devs www.gaohq.top
                -m 自动创建用户家目录
                -g 指定用户所在的组,否则会建立一个和用户同名的组

        passwd 用户名 设置用户名对应的密码
            passwd www.gaohq.top
            输入密码    

        userdel -r 用户名  -r 选项会自动删除用户家目录
            userdel -r gaohq


    6、修改文件/文件夹的拥有者(ls -l 结果第三列)

        chown -R admin:admin 目录/文件名
        该k目录以及该目录下所有子目录都会归admin用户和admin组拥有.

 

 

4、文档查看的命令 

 4.1 head 和tail 指令

tail
	查看一个文件的末n行
	tail -n 文件的路径 -n 如果不写默认表示最后10行。

head 

	查看一个文件的前n行
	head -n 文件的路径 -n 如果不写默认表示前10行。

4.2 less 指令

4.3 删除文件的内容

> php222.txt

5、关机重启的命令

 5.1 关机重启的命令

reboot

6、进阶指令

6.1 du指令

du指令
	directory used 目录的使用情况,显示出来目录所占的磁盘空间大小的情况
	du+目录路径
	du -sh s:表示sumary 汇总统计 -h 表示以较高可读性的形式显示
	和 ls -l 显示的大小还不一样,ls -l 仅仅现实文件夹占的大小,不会把文件夹里面的文件    以及文件夹算进去

  

 

6.2 df 指令

df 指令
	disk free:表示查看磁盘剩余空间的命令
	df -h 表示以较高可读性单位查看

6.3 find 命令

 主要是用来查询文件或者文件夹的

find指令
	表示根据条件去查询文件或者文件夹的所在位置
	find 范围路金  选项 选项的值
	常见的选项:
		-name: 根据名字进行查询
		-type: 根据文档的类型进行查询 【d 表示文件夹,f表示普通文件】
		-group: 根据所属的用户组进行查询

 

 

6.4 ps 指令

ps 指令
	表示process show 查看进程
    ps -ef
    -e 等价于 -A,all 表示全部
    -f 表示 全部

 

结果 :

    UID :该进程由那个用户启动的
    PID: 进程ID
    PPID: parent process id,父级进程id
    C: 表示cpu的使用情况
    STIME: 启动时间
    TIME: 持续运行时间

6.5 grep 指令

选出需要的内容,可以理解成知道文件在哪里了,但是文件中的关键字在哪里还不清楚,find是找到文件夹。

 

grep 指令
    搜索、过滤主要是用于对于文件或则内容进行筛选,选出需要的内容,可以理解成知道文件在哪里了
    但是文件中的关键字在哪里还不清楚,find是找到文件夹。
    举例1:
    使用 grep 命令 筛选出 ss.txt 文件中是否有ad 字母。
        grep "ad" ss.txt
 
    举例2:
    使用 grep -v 实现排除“111” 的所在行,意思是除了包含 111 的行,别的行都显示出来
        grep -v "111" /home/admin/ss/httpd.conf

    举例3
    使用 grep -n 筛选出 ss.txt 文件中有ad 字母所在的行

 

  

 

6.6 free 命令

free 命令是一款专门用于内存查看的命令,可以查看当前系统可用和已用的内存情况


 total        used        free      shared  buff/cache   available


 total: 系统上安装的总内存良/Swap交换区的总量
 used: 已用内存,公式 used = toatl - free - buffers -cache
 shared: 用作共享内存的内存用量
 buff/cache: 所有buff和cache的总用量
 buffers: 内核缓冲用量
 free: 是为使用的内存
 avaiable: 为系统估计可用的可用于启动新应用而无需交换的可用内存量。

 free -h h是human的含义,意思是给人阅读的选项

               total        used        free      shared  buff/cache   available
Mem:           1.8G        227M        1.2G        8.8M        362M        1.4G
Swap:            0B          0B          0B


free  命令定时的显示内存
free -s 5  s:seconds的意思 


Linux会充分利用这些空闲的内存,设计思想是内存空闲还不如拿来多缓存一些数据,等下次程序再次访问这些数据速度就快了,而如果程序要使用内存而系统中内存又不足时,这时不是使用交换分区,而是快速回收部分缓存,将它们留给用户程序使用。


 
因此,可以看出,buffers/cached真是百益而无一害,真正的坏处可能让用户产生一种错觉——Linux耗内存!其实不然,Linux并没有吃掉你的内存,只要还未使用到交换分区,你的内存所剩无几时,你应该感到庆幸,因为Linux 缓存了大量的数据,也许下一次你就从中受益!

6.7 管道符 | 的学习

管道的命令 | 使用
	管道的概念:Linux中允许将一个命令的输出 可以通过管道 作为另一个命令的输入。由这句话可以看到
	管道至少需要配合两个命令使用。
	常配合grep和more使用.
		grep 在第一个命令执行结果的基础上查询指定的文本
		more 对第一个命令执行的结果进行分屏显示

	使用举例	
		ls -l | grep a 过滤 ls -l 命令显示文件和文件夹 的结果中包含 a的 文件或文件夹
		ps -ef | grep nginx  过滤 ps -ef 命令显示的结果中 是否包含 nginx 相关进程

  

7、网络相关的命令

7.1 telnet

telnet 就是看某个端口是否可以访问。一个系统应该尽可能的开放少的端口,避免被攻击

使用的方式 telnet ip/域名 空格 端口

端口开放的标志
    Trying 220.181.38.149...
    Connected to www.baidu.com.
    Escape character is '^]'.

端口没有开放的标志
    Trying 220.181.38.149...
    提示链接拒绝

退出telnet 的方式
    ctrl + c

 7.2 netstat

netstat 用来查看网络连接状态的是networkstate的简称。用来看传输层的连接状态的,主要看tcp和udp的连接。
常用的组合
netstat -lntp 意思是查看主机作为服务器正在监听的tcp端口,我们发布了一个服务可以使用
这个命令查看是否已经对外提供服务了。
l:是listen的意思,显示正在监听状态的的服务,也可以用a来替换,a是所有状态的服务。
n: numberic的缩写,数字的是个形容词,不带n的话netstate会把它能识别的协议用名称显示,如ssh,http,smtp等如果识别不出来还是以数字表示
t: tcp
p: 进程的名字

netstate -lntp显示的结果说明
Proto    Recv-Q             Send-Q          Local Address         Foreign Address   State    PID/Program name

协议      接收队列一般为0      发送队列一般是0   本地地址               远端地址           状态      进程


netstat -antup 把所有的tcp和udp进程展示出来

因为不同系统的原因,在mac中需要使用netstat -tlp tcp netstat -tlp udp 来指定其后使用的协议状况否责会报错

netstat: option requires an argument -- p

 

 

posted on 2021-10-30 15:30  与时具进&不忘初心  阅读(77)  评论(0编辑  收藏  举报