目录说明
# /bin[重点]:是Binary的缩写,这个目录存放着最经常使用的命令 # /sbin[重点]:是Super User的意思,这里存放的是系统管理员使用的系统管理程序 # /home[重点]:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般目录名是以用户的账号命名的 # /root[重点]:该目录为系统管理员,也称作超级权限者的用户主目录 # /lib:系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库 # /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 # /etc[重点]:所有的系统管理所需要的配置文件和子目录 my.conf # /usr[重点]:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录 # /boot[重点]:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件 # /proc[别动]:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息 # /srv[别动]: service缩写,该目录存放一些服务启动之后需要提取的数据 # /sys[别动]:这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统 # /tmp:这个目录是用来存放一些临时文件的 # /dev:类似于windows的设备管理器,把所有的硬件用文件的形式存储 # /media[重点]:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下 # /mnt[重点]:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了 # /opt:这是给主机额外安装软件所摆放的目录,如安装oracle数据库就可放到该目录下,默认为空。 # /usr/local[重点]:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序 # /var[重点]:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件 # /selinux[security-enhanced linux]:SELinux是一种安全子系统,它能控制程序只能访问特定文件 总结:1 )linux的目录中有且只有一个根目录/ 2 )linux的各个目录存放的内容是规划好,不用乱放文件3 )linux是以文件的形式管理我们的设备,因此linux系统,一切皆为文件vi和vim编辑器 # 三种模式: # 1、正常模式:打开文件默认就是一般模式 # 2、插入/编辑模式:按下i,I,o,O,a,A,r,R任何字母进入,一般按i即可 # 3、命令行模式:正常模式下输入:(冒号)或者/(斜杆)进入,可以读取、存盘、替换、离开vim、显示行号等 # 拷贝当前行,按p才粘贴 yy# 拷贝当前行向下的5行,按p才粘贴 5yy# 删除当前行 dd# 删除当前行向下5行 5dd# 在文件中查找某个单词,命令行操作,输入n查找下一个,shift + n查找上一个 / 关键字# 取消搜索高亮 : noh# 设置文件的行号 : set nu# 取消文件的行号 : set nonu# 跳到文件最末行 G# 跳到文件首行 gg# 跳到文件第几行 5 [ 数字] gg# 撤销输入动作 u
关机&重启命令 # 立刻进行关机 shutdown- h now 或 halt# 1分钟后关机 shutdown- h1 # 现在重新启动计算机 shutdown- r now 或 reboot# 关机或重启时,把内存的数据同步到磁盘 sync# 注销用户 logout# 切换系统管理员身份 su 用户名用户管理 # 基本语法,默认以用户名为组 # 当创建用户成功后,会自动创建和用户名同名的家目录,位于/home # 也可以通过useradd -d 指定新创建用户的家目录 useradd[ 选项] 用户名# 添加用户 useradd 用户名# 添加用户,指定家目录 useradd- d/ home/ people/ xh# 给用户指定或者修改密码 passwd 用户名# 删除用户,但保留家目录(推荐) userdel 用户名# 删除用户,但不保留家目录 userdel- r 用户名# 查询用户信息 uid=0(root) gid=0(root) 组=0(root) id 用户名# 切换用户,高权限用户切换到低权限用户不需要密码 su 用户名 或者 su- 用户名# 返回原来的用户 exit# 添加用户组 groupadd 组名# 删除用户组 groupdel 组名# 创建用户,指定组 useradd- g 组名 用户名# 修改用户的组 usermod- g 组名 用户名# 相关配置文件 # /etc/passwd:用户相关信息:用户名:口令:用户id:组id:家目录:shell # /etc/shadow:口令的配置文件 # /etc/group:组的配置文件:组名:口令:组id:组内用户列表 运行级别指令 # 运行级别,常用级别(3和5),配置文件/etc/inittab[init:运行级别]: # 0:关机 # 1:单用户(找回丢失密码) # 2:多用户无网络服务 # 3:多用户有网络服务 # 4:系统未实用保留给用户 # 5:图形界面 # 6:系统重启 # 切换运行级别 init[ 012356 ] # 实例:找回root密码 https: / / blog. csdn. net/ cxhblog/ article/ details/ 114191501 帮助指令 # man [命令或配置文件](功能描述,获得帮助信息) man ls# help 命令(获得shell内置命令的帮助信息) help cd文件目录类 # 显示当前目录的绝对路径 pwd# 显示当前目录的内容信息 ls# 显示当前目录的内容信息,包括隐藏的 ls- a# 显示当前目录的内容信息,以列表的方式 ls- l# 显示当前目录的内容信息,以列表的方式并且显示大小 ls- lh# 查看文件所有者 ls- ahl# 切换目录 cd 目录路径# 创建目录 mkdir 目录名# 创建多级目录 mkdir- p/ home/ animal/ dog# 删除文件,提示 rm hello. txt# 删除文件,不提示 rm- f hello. txt# 删除空目录 rmdir/ home/ animal/ dog# 递归删除非空目录,会提示 rm- r/ home/ animal# 递归删除非空目录,不提示 rm- rf/ home/ animal# 创建空文件 touch hello. txt# 一次性创建多个空文件 touch hello1. txt hello2. txt# 拷贝文件到指定目录 cp hello. txt[ 要拷贝的文件] / home/ hello/ [ 要拷贝到的目录] # 递归复制整个目录 cp- r hello[ 要拷贝的目录] / home/ bbb[ 要拷贝到的目录] # 拷贝并重命名文件 cp hello. txt hello1. txt# 强制覆盖要复制的文件目录 \cp- r hello/ bbb/ # 移动文件 mv hello. txt bbb/ # 移动文件,并重命名 mv hello. txt hello1. txt# 查看文件内容 cat hello. txt# 查看文件内容,显示行号 cat- n hello. txt# 查看文件内容,显示行号,分页显示 cat- n hello. txt| more# 输出内容到控制台 echo hello world# 输出环境变量 echo $PATH# 显示文件开头部分内容,默认10行 head hello. txt# 显示文件开头部分内容,前5行 head- n5 hello. txt# 查看文件后面内容,默认后10行 tail hello. txt# 查看文件后面内容,后5行 tail- n5 hello. txt# 实时查看文件后面内容 tail- f hello. txt# 建立软链接 ln- s/ root[ 要链接到的目录] linkToRoot[ 链接名目录] # 查看历史指令 history# 查看历史指令,显示10个 history10 # 执行历史指令,第10个 ! 10 more和less查看文件内容 # more相关操作 # 空白键(space):向下翻一页 # Enter:向下翻一行 # q:立刻离开,不再显示文件内容 # Ctrl+F:向下滚动一屏 # Ctrl+B:返回上一屏 # =:显示当前行号 # f:输出文件名和当前行号 # 实践操作 more hello. txt# less相关操作(比more更加强大,效率更高) # 空白键(space):向下翻动一页 # pagedown:向下翻动一页 # pageup:向上翻动一页 # /文字:向下搜索文字 # ?文字:向上搜索文字 # q:离开less # 实践操作 less hello. txt>输出重定向和>>追加 # 输出内容到文件中,覆盖写 ls- l> a. txt# 输出内容到文件中,追加 ls- la>> b. txt# 文件1的内容覆盖到文件2 cat a. txt> b. txt# echo的内容输出到文件中 echo hello> a. txt# 把当前日期写入文件 cal> a. txt时间日期类 # 显示当前日期时间 date# 显示当前年份 date"+%Y" # 显示当前月份 date"+%m" # 显示当前日 date"+%d" # 显示当前年月日 date"+%Y-%m-%d" # 显示当前年月日时分秒 date"+%Y-%m-%d %H:%M:%S" # 设置日期 date- s2021 - 02 - 28 14 : 58 : 60 # 查看当前日历 cal# 显示2020年日历 cal2020 搜索查找类 # find指令将从指定目录向下递归的遍历其各个子目录,将满足条件的文件或目录显示在终端 # 注意点:指定开始搜索的范围目录,路径必须在表达式之前,例:当前目录/home,不能查找/ # 基本语法:find [指定开始搜索的范围目录] [选项] # 按文件名查找文件 find/ - name hello. txt# 按用户名文件拥有者查找文件 find/ - user nobody# 按文件大小查找文件,大于3m find/ - size+ 3M # 按文件大小查找文件,小于3m find/ - size- 3M # 按文件大小查找文件,等于3m find/ - size3M # 按文件大小查找文件,大于30k find/ - size+ 30K# 查找以什么为后缀的文件 find/ - name* . txt# locate快速查找文件 # 创建locate数据库 updatedb# 查找文件 locate hello. txt# grep指令和管道符号 | # grep过滤查找,管道符 | ,表示将前一个命令的处理结果输出传递给后面的命令处理 # 查看文件,过滤文件显示存在数字10 cat a. txt| grep10 # 查看文件,过滤文件显示存在数字10,显示行号 cat a. txt| grep- n10 # 查看文件,过滤文件显示存在数字hello,忽略大小写 cat a. txt| grep- i hello# 查看文件,过滤文件显示存在数字hello,忽略大小写,显示行号 cat a. txt| grep- ni hello压缩和解压缩 # 压缩文件,压缩完成,文件名作为压缩文件名,并且原文件不保留 gzip hello. txt[ 文件名] 得到:hello. txt. gz# 解压文件 gunzip hello. txt. gz# 压缩文件 zip hello. zip hello. txt# 递归压缩文件目录 zip- r home. zip/ home# 解压文件到某个目录 unzip- d/ home/ people/ home. zip# 打包hello.txt和a.txt两个文件,打包名为hello.tar.gz tar- czvf hello. tar. gz hello. txt a. txt# 解包文件到当前目录下 tar- zxvf hello. tar. gz# 解包文件到/home/zwj目录下 tar- zxvf hello. tar. gz- C zwj/ # -c:产生.tar打包文件 # -v:显示详细信息 # -f:指定压缩后的文件名,指定备份文件 # -z:打包同时压缩,处理备份文件 # -x:解包.tar文件 组管理和权限管理 # Linux组基本介绍:在linux中的每个用户必须属于一个组,不能独立于组外。每个文件有所有者,所在组,其它组的概念 # 1:所有者:文件的创建者,谁创建就是谁 # 2:所在组:一般指所有者所在的组,文件可以更改所在者 # 3:其它组:除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组 # 4:改变用户所在的组 # 查看文件所有者 ls- ahl# 修改文件所有者 chown tom hello. txt# 修改文件所在组 chgrp police hello. txt# 改变用户所在组 usermod- g police[ 组名] tom[ 用户名] # 改变用户登录的初始目录 usermod- d/ home/ police[ 目录名] tom[ 用户名] # -rw-r--r--. 1 tom police 0 2月 28 22:33 ok.txt # r[4]:读取,查看,w[2]:写,x[1]:执行,进入目录 # 第1个[-]:文件类型:-:普通文件,d:目录,l:软链接,c:字符设备[键盘,鼠标],b:块文件[硬盘] # 第2-4个[rw-]:所有者权限 # 第5-7个[r--]:文件所在者的用户的权限 # 第8-10个[r--]:文件其它组的用户的权限 # 第11个[1]:如果是文件表示硬链接的数,如果是目录表示该目录下子目录个数 # 第12个[tom]:文件的所有者用户名 # 第13个[police]:文件的所在组 # 第14个[0]:文件的大小,文件有内容的话,多加1个隐藏字符,如果是4096代表目录占据的空间 # 第15个[28 22:33]:文件最后的修改时间 # u:所有者,g:所有组,o:其他人,a:所有人(u,g,o的总和) # 1:chmod u=rwx,g=rx,o=x 文件目录名 # 2:chmod o+w 文件目录名 # 3:chmod a-x 文件目录名 # 给abc.txt文件,所有者读,写,执行权限,给所有组读,执行权限,给其他者读,执行权限 chmod u= rwx, g= rx, o= rx abc. txt 或 chmod755 abc. txt# 给abc.txt文件的所有者除去执行的权限,增加组写的权限 chmod u- x, g+ w abc. txt 或 chmod675 abc. txt# 给abc.txt文件的所有用户添加读的权限 chmod a+ r abc. txt# 改变文件的所有者 chown cxh[ 用户名] a[ 文件目录] # 改变用户的所有者和所有组 chown cxh: cxh a# 递归改变文件目录及子文件目录所有者和所有组 chown- R cxh: cxh a定时任务调度 # 设置个人任务调度 crontab- e# 终止任务调度 crontab- r# 列出当前有哪些任务调度 crontab- l# 重启任务调度 service crond restart# 每分钟执行ls -l /etc/目录,>>追加显示到/tmp/to.txt文件中 * / 1 * * * * ls- l/ etc/ >> / tmp/ to. txt# 第一个*:分钟[0-59] # 第二个*:小时[0-23] # 第三个*:月天[1-31] # 第四个*:月[1-12] # 第五个*:星期几[0-7],0和7都代表周日 # 特殊符号说明 # *:代表任何时间,比如第一个*代表每小时中每分钟都执行一次 # ,:代表不连续的时间,比如“0 8,12,14 * * *“代表在每天的8,12,14点0分都执行一次命令 # -:代表连续的时间范围,比如“0 5 * * 1-6”代表周一到周六凌晨5点0分执行命令 # */n:代表每隔多久执行一次,不如“*/10 * * * *”代表每隔10分钟执行一次命令 # 任务案例 # 45 22 * * *:每天22点45分执行命令 # 0 17 * * 1:每周一下午5点0分执行命令 # 0 5 1,15 * *:每月1号和15号凌晨5点0分执行命令 # 40 4 * * 1-5:每周一到周五凌晨4点40分执行命令 # */10 4 * * *:每天凌晨4点,每隔10分钟执行一次命令 # 0 0 1,15 * 1:每周一,1号,15号,凌晨00:00都会执行命令 # 每分钟执行/home/mytask.sh脚本文件,脚本文件需要给可执行权限才可调用 * / 1 * * * * / home/ mytask. sh磁盘分区和挂载 # mbr分区: # 1:最多支持四个主分区 # 2:系统只能安装在主分区 # 3:扩展分区要占一个主分区 # 4:MBR最大支持2TB,但拥有最好的兼容性 # gtp分区 # 1:支持无限多个主分区(但操作系统可能限制,比如windows下最多128个分区) # 2:最大支持18EB的大容量(1EB=1024PB,1PB=1024TB) # 3:windows7 64位以后支持gtp # Linux分区: # 1:无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构, # Linux中每个分区都是用来组成整个文件系统的一部分 # 2:Linux采用了一种叫“载入”的处理方法,它的整个系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得 # 硬盘 # Linux硬盘分IDE硬盘和SCSI硬盘,目前基本是SCSI硬盘 # 查看系统的分区和挂载情况,有分区大小 lsblk(译读:老师不离开)# 查看系统的分区和挂载情况,详细信息 lsblk- f# 虚拟机添加一块硬盘,查看下面链接文章: https: / / blog. csdn. net/ cxhblog/ article/ details/ 114277421
磁盘情况查询 # 查询系统整体磁盘使用情况 df- lh# 查询指定目录的磁盘占用情况 du- ach-- max- depth= 1 / opt# -s:指定目录占用大小汇总 # -h:带计量单位 # -a:含文件 # --max-depth=1:子目录深度 # -c:列出明细的同时,增加汇总值 # 磁盘情况-工作实用指令 # 统计/home文件夹下文件的个数 ls- l/ home| grep"^-" | wc- l# 统计/home文件夹下目录的个数 ls- l/ home| grep"^d" | wc- l# 统计/home文件夹下文件的个数,包括子文件里的 ls- lR/ home| grep"^-" | wc- l# 统计/home文件夹下目录的个数,包括子文件里的 ls- lR/ home| grep"^d" | wc- l# 以树状显示目录结构,需要安装tree,yum install tree tree网络配置 # 测试主机之间网络连通 ping www. baidu. com# 配置固定ip # 编辑配置文件,修改如下图 vim/ etc/ sysconfig/ network- scripts/ ifcfg- ens33# 重启网络服务,网络依然自动连接说明配置正确 service newtwork restart
进程管理 # 基本介绍 # 1、在Linux中,每个执行的程序(代码)都称为一个进程,每一个进程都分配一个ID号 # 2、每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程 # 3、进程分两种方式,前台和后台。 # 4、一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。 # 显示当前终端的所有进程信息 ps- a# 以用户的格式显示进程信息 ps- u# 显示后台进程运行的参数 ps- x# 结合使用 ps- aux 或者 ps- ef# 显示进程信息,过滤进程 ps- aux| grep sshd# 获取某服务程序的所有进程号 pgrep httpd# System V:展示风格 # USER:用户名称 # PID:进程号 # %CPU:进程占用CPU的百分比 # %MEM:进程占用物理内存的百分比 # VSZ:进程占用的虚拟内存大小(单位:KB) # RSS:进程占用的物理内存大小(单位:KB) # TTY:终端名称 # STAT:进程状态,s-睡眠,r-运行,D-短期等待,Z-僵尸进程,T-被跟踪或者被停止 # STARTED:进程的启动时间 # TIME:CPU占用总时间 # COMMAND:启动进程所用的命令和参数,过长会被截断显示 # 查看进程的父进程 ps- ef# 查看sshd进程的父进程 ps- ef| grep sshd# 杀死进程,根据进程id kill4010 # 强制杀死进程,根据进程id kill- 9 4010 # 杀死进程,通过进程名称 killall gedit# 以树状查看进程pid pstree- p# 以树状查看进程的用户id pstree- u
服务管理 # 查看端口监听情况 netstat- lnpt# lsof 列出当前系统打开文件,常与-i选项使用,用于查看某个端口被哪个程序占用 lsof- i: 80 # 开启服务 systemctl start 服务名称. service# 查看服务状态信息 systemctl status rabbitmq- server[ 服务名称] # 查看已开放的端口(默认不开放任何端口) firewall- cmd-- list- ports 或 firewall- cmd-- list- all# 开放端口 firewall- cmd-- zone= public ( 作用域) -- add - port= 80 / tcp ( 端口和访问类型) -- permanent ( 永久生效) # 删除开放端口 firewall- cmd-- zone= public -- remove - port= 80 / tcp-- permanent# 检查防火墙状态 systemctl status firewalld# 查看防火墙状态 firewall- cmd-- state# 开启防火墙 systemctl start firewalld. service# 重启防火墙 firewall- cmd-- reload 或 systemctl reload firewalld. service# 关闭防火墙 systemctl stop firewalld. service# 禁止防火墙开机启动 systemctl disable firewalld. service# 测试端口是否开放成功,cmd命令下,需要安装telnet命令 telnet192.168 .178 .2 22 # 查看开机自启服务 setup 或者 ls- l/ etc/ init. d/ # 查看各个运行级别下,服务的自启动状态 chkconfig-- list# 查看各个运行级别下,指定服务的自启动状态 chkconfig network-- list# 修改某个运行级别下,服务的自启动状态 chkconfig-- level5 networkon / off# 修改所有运行级别下,服务的自启动状态 chkconfig networkon / off进程监控 # 动态监控进程 # -d:指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令 # -i:使top不显示任何闲置或僵死进程 # -p:指定进程ID监控进程的姿态 # 交互操作说明 # P:以CPU使用率排序,默认 # M:以内存的使用率排序 # N:以PID排序 # q:退出top # 查看监控进程,按CPU使用率排序 top 输入P# 监视特定用户 top 命令下输入u,再输入用户名# 终止指定进程 top 输入k,输入进程ID# 指定系统更新时间,10秒 top- d10 # 监控网络状态 # -an:按一定顺序排列输出 # -p:显示哪个进程在调用 # 查看系统所有的网络服务 netstat- anp| morerpm和yum # RPM:RedHat Package Manager(ReaHat软件包管理工具) # 查询所有安装的rpm包 rpm- qa# 查询指定名称安装的rpm包 rpm- qa| grep firefox# 查询软件是否安装 rpm- q firefox# 查询安装软件包信息 rpm- qi firefox# 查询安装软件包的文件在哪里 rpm- ql firefox# 查询文件所属的软件包 rpm- qf/ etc/ passwd# 删除安装的软件包 rpm- e firefox# 强制删除安装的软件包(尽量不用) rpm- e-- nodeps firefox# 安装rpm包,需要按下面步骤找安装包 rpm- ivh firefox# i=install 安装 # v=verbose 提示 # h=hash 进度条 # 虚拟机 -> 设置 -> CD/DVD -> 浏览 -> CentOS-7-x86_64-DVD-2003.iso -> cd /media/Centos../ -> cp 包 /opt/ # yum是一个Shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性,并且一次安装所有依赖的软件包(需要联网) # 查看yum服务器是否有需要安装的软件 yum list| grep firefox# 安装yum包 yum install firefox# 卸载yum包 yum uninstall firefox