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