翼度科技»论坛 云主机 LINUX 查看内容

Linux学习总结

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
Linux笔记

Linux目录结构

1. /bin目录
/ bin目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。这些命令都是二进制文件的可执行程序( bin是binary - -二进制的简称),多是系统中重要的系统文件。
2. /sbin目录
/ sbin目录类似/bin ,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。
3. /etc目录
/ etc目录存放着各种系统配置文件。l i n u x正是这些文件才得以正常地运行。
4. /root目录
/root 目录是超级用户的目录。
5. /lib目录
/ lib目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。
6. /lib/modules 目录
/lib/modules 目录包含系统核心可加载各种模块,尤其是那些在恢复损坏的系统时重新引导系统所需的模块(例如网络和文件系统驱动)。
7. /dev目录
/dev目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可以通过访问/dev/mouse来访问鼠标的输入,就像访问其他文件一样。
8. /tmp目录
/tmp 目录存放程序在运行时产生的信息和数据。但在引导启动后,运行的程序最好使用/var /tmp来代替/tmp ,因为前者可能拥有一个更大的磁盘空间。
9. /boot目录
/boot目录存放引导加载器(bootstrap loader)使用的文件,如l i lo,核心映像也经常放在这里,而不是放在根目录中。但是如果有许多核心映像,这个目录就可能变得很大,这时使用单独的文件系统会更好一些。还有一点要注意的是,要确保核心映像必须在i d e硬盘的前1 0 2 4柱面内。
10. /mnt目录
/ mnt目录是系统管理员临时安装( mount )文件系统的安装点。程序并不自动支持安装到/mnt 。/mnt 下面可以分为许多子目录,例如/mnt/dosa 可能是使用m s d o s文件系统的软驱,而/mnt/exta 可能是使用e x t 2文件系统的软驱,/mnt/cdrom 光驱等等。
11./proc目录
/proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
12./run目录
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
13./srv目录
该目录存放一些服务启动之后需要提取的数据。
14./var目录
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
15./home目录
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
16./media目录
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
17./opt目录
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
18./sys目录
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
19./usr目录
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
Vim


  • 命令行        ->           一般模式        vim xxx
  • 一般模式      ->           编辑模式        i
  • 一般模式      ->           命令模式        :或者 /
  • 编辑模式      ->           一般模式        ESC
  • 命令模式      ->           一般模式        ESC
  • 在命令行下    :wq 保存退出;   :q 退出;      :q! 强制退出,不保存
常用快捷键


  • 拷贝当前行        yy
  • 拷贝当前行向下5行        5yy
  • 删除当前行        dd
  • 删除当前行向下5行        5dd
  • 查找关键字        /关键字             n 找下一个
  • 开启/关闭行号        :set nu/:set nonu
  • 跳转到首行        gg
  • 跳转到尾行        G
  • 撤销         u
  • 跳转到指定行        行号+shift+g
关机/重启


  • 把内存的数据同步到磁盘        sync
  • 立刻关机        shutdown     -h     now
  • 一分钟后关机        shutdown     -h    1
  • 立刻重启        shutdown     -r    now
  • 立刻关机        halt
  • 立刻重启        reboot
用户管理


  • 添加一个用户:        useradd  用户名【每个用户有自己的文件夹,默认为  /home/用户名】
  • 可以通过     useradd  用户名   -d     目录    【不使用默认生成的家目录,自己指定用户的家目录】
  • 更改用户密码:      password   用户名
  • 显示当前用户所在目录:            pwd
  • 删除用户

    • 删除用户,但保留家目录    userdel     用户名
    • 删除用户以及家目录    userdel   -r    用户名

  • 一般情况建议保留家目录
用户登录/注销


  • 切换用户        su - 用户名
  • 注销用户        logout
查询用户信息


  • 查询用户信息:        id   用户名
  • whoami 只显示用户名,且su后将显示切换后的用户名
  • who am i 则显示用户名、登陆时间和ip,且su后仍显示首次登陆的用户
用户组


  • 类似于角色,系统可以对同一组(同一权限)的用户统一操作

  • 新增组:    groupadd   组名
  • 删除组:    groupdel   组名
  • 添加用户到指定组:    useradd  -g  用户组  用户名
    【不指定组会直接生成 以用户名为组名的组,并将该用户加入到组中】
  • 修改用户组:      usermod  -g  用户组  用户名
  • /etc/passwd文件 用户(user)的配置文件,记录用户的各种信息
    每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
  • /etc/shadow文件 口令的配置文件
    每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • /etc/group文件 组(group)的配置文件,记录Linux包含的组的信息
    每行含义:组名:口令:组标识号组内用户列表
实用指令

运行级别说明:

0:关机
1: 单用户【找回丢失密码】
2: 多用户状态没有网络服务
3: 多用户状态有网络服务
4: 系统未使用保留给用户
5: 图形界面
6: 系统重启
常用运行级别是 3和5 ,也可以指定默认运行级别
切换运行级别

通过指令设置运行级别: init 级别数字
查看当前的运行级别: systemctl get-default
设置默认的运行级别: systemctl set-default multi-user.target
帮助指令

man指令


  • 获取帮助信息:        man [命令或配置文件]     【例如 man ls 查看ls指令的说明】
  • ls -a 查看所有文件【包括隐藏文件】
  • ls -l 单列输出查看文件
  • 可以组合 ls -al 单列输出查看所有文件【包括隐藏文件】
  • 指定查看某个目录所有文件:
help指令


  • 获取shell内置命令的信息帮助:  help cd
文件目录类

cd指令


  • 显示当前工作目录的绝对路径:        pwd
  • 跳转到指定目录:        cd 目录
  • 回到当前目录的上一级目录:        cd ..
  • 回到自己的家目录:        cd ~ 或者 cd :
mkdir指令


  • 创建目录:        mkdir    要创建的目录
  • 创建多级目录:        mkdir  -p  要创建的目录
  • 删除目录:        rmdir   要删除的空目录
  • 删除非空目录:        rm -rf   要删除的目录 【强制删除,慎用!】
touch指令


  • 创建空文件:        touch  文件名
cp指令


  • 拷贝文件到指定目录:        cp   source   dest
  • 递归拷贝整个文件到指定目录:        cp    -r   source   dest
  • 【强制覆盖,不提示】递归拷贝整个文件到指定目录:        \cp    -r   source   dest
rm指令


  • 删除文件或目录:        rm 要删除的文件
  • 递归删除文件或目录:        rm  -r  要删除的文件或目录
  • 【强制覆盖,不提示】递归删除整个文件或目录:        rm  -rf  要删除的文件或目录
mv指令


  • 重命名文件:        mv   旧文件路径   新文件路径   【同一个路径】
  • 移动文件:        mv   旧文件路径   新文件路径
  • 移动并且重命名文件:        mv   旧文件路径   新文件路径【不在同一个路径】
  • 移动整个目录:        mv   旧文件路径/   新文件路径
cat指令


  • 查看文件内容:        cat 要查看的文件
  • 查看文件内容并显示行号:        cat  -n    要查看的文件
  • 为了方便浏览,可以带上 管道命令 |more 【意思就是把前一个命令交给 more处理,例如 cat -n  /etc/profile | more】
more指令

more指令是基于VI编辑器的文本过滤器,以全屏幕的方式按页展示文本文件内容,有许多快捷键

  • 向下翻一页:        space
  • 向下翻一行:        Enter
  • 离开:        q
  • 向下滚动一屏:        Ctrl + F
  • 返回上一屏:        Ctrl + B
  • 输出当前行的行号:        =
  • 输出文件名和当前行的行号:        :f
less指令


  • less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。
  • less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
操作功能说明空白键向下翻动一页;[pagedown]向下翻动一页[pageup]向上翻动一页;/字串开启向下搜寻『字串』的功能;n向下查找N向上查找?字串开启向上搜寻『字串』的功能;n向上查找N向下查找q离开less这个程序echo指令


  • 输出内容到控制台【例如:echo $HOSTNAME 】:        echo 输出内容
  • 输出字符串【例如:echo  hello,world 】:       echo  字符串
head指令


  • 显示文件的开头部分,默认显示前10行内容:        head         文件
  • 指定显示前15行内容:        head    -n     15    文件
tail指令


  • 显示文件的尾部分,默认显示最后10行内容:        tail      文件
  • 指定显示后15行内容:        tail     -n     15    文件
  • 实时监控文档的所有更新:        tail     -f    文件
覆盖文件内容:   >指令

追加文件内容:   >>指令


  • ls -l > 文件        【将显示的文件列表 ,覆盖到指定文件】
  • ls -al >> 文件        【将显示的所有文件列表 ,追加到指定文件】
  • cat 文件1 > 文件2     【将显示的文件1覆盖文件2内容】
  • echo "内容"  >> 文件    【将显示的 "内容" 追加到指定文件】
ln指令

软连接,也称符号链接,类似于快捷方式,主要存放了链接其他文件的路径

  • 给源文件创建一个软链接        ln -s  源文件或目录 软链接名
  • 删除软连接        rm 软链接路径
history指令


  • 查看已经执行过的历史命令:        history
  • 查看已经执行过的历史命令 10条:        history   10
  • 执行指定编号的历史命令:        !编号
时间日期类

date指令


  • 显示当前时间:        date
  • 显示当前年份:        date   +%Y
  • 显示当前月份:        date    +%m
  • 显示当前是哪一天:        date    +%d
  • 显示当前年月日时分秒:        date "%Y-%m-%d %H:%M:%S"
  • 设置系统当前时间:        date    -s    字符串时间
cal指令


  • 显示当前日历:        cal
  • 显示指定年的日历:        cal  年份
搜索查找类

find指令


  • 从指定目录向下递归的变量各个子目录,讲满足条件的文件或目录显示在终端        【搜索方式有三种: -size        -name        -user】

    • 语法:        find     搜索目录    搜索方式    文件名

  • 按照指定的文件名查找文件:        find     搜索目录   -name  文件名
  • 按照指定的用户名查找属于用户名的所有文件:        find     搜索目录    -user  用户名
  • 按照指定的文件大【+表示大于,-表示小于,n表示等于,200K,200M,200G】:        find     搜索目录  -size   +文件大小
locate指令


  • locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件
  • Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
  • 第一次运行必须使用 updatedb指令 创建 locate数据库
which指令

可以查看某个指令在哪个目录下:        which   指令名
grep指令 和 管道符号 |


  • grep 过滤查找, 管道 | 表示将前一个命令的结果交给后面的命令处理
  • 显示匹配行和行号:         grep   -n     查找内容  源文件
  • 忽略字母大小写:             grop   -i      查找内容  源文件
压缩和解压类

gzip指令

压缩单个文件【只能将文件压缩为 *.gz文件】:        gzip   文件
gunzip指令

解压缩单个文件:        gunzip   文件.gz
zip指令

压缩整个目录:         zip      -r   生成的压缩包的名字  将要压缩的目录
unzip


  • 解压缩目录:        unzip         将要解压缩的内容.zip
  • 解压缩到指定目录:        unzip      -d    解压后的目录      将要解压缩的内容.zip
tar指令


  • 打包指令,最后打包的文件是 .tar.gz 的文件
  • tar  [选项]  XXX.tar.gz   打包的内容
  • 选项功能-C产生.tar打包文件-V显示详细信息-f指定压缩后的文件名-Z打包同时压缩-X解包.tar文件
  • 示例:压缩   tar  -zcvf  XXX.tar.gz   /home/
  • 示例:解压   tar  -zxvf  XXX.tar.gz
  • 示例:解压   tar  -zxvf    XXX.tar.gz  -C  /opt/tmp/       【-C 固定格式,-C后面指定解压后的位置】
组管理


  • Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中的每个文件有所有者、所在组、其他组的概念
文件/目录所有者


  • 文件/目录所有者,一般为文件的创建者,也可以修改

  • 查看文件的所有者:        ls -ahl
  • 修改文件的所有者:        chown  用户名   文件名
组的创建


  • 创建组:        groupadd  组名
  • 创建用户到指定组:        useradd  -g  用户  组名
所在组


  • 当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

  • 查看文件/目录的所在组:        ls -ahl
  • 修改文件/目录的所在组:        chgrp  组名   文件名
其他组

除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
改变用户的所在组


  • 添加用户是可以指定该用户添加在哪个组:        useradd  -g  用户  组名
  • root用户可以改变某个用户的组
  • 改变用户所在组:        usermod  -g  新组名  用户名
  • 改变用户登录的初始目录【用户需要有进入新目录的权限】:        usermod  -d  目录名  用户名
权限

查看权限 :ls -l
  1. -rwxr-xr-x. 1 root root    8440 6月   1 13:55 myhello
复制代码
第0位:-
其余每三个一组

  • rwx;
  • r-x;
  • r-x


  • 0-9位说明

  • 第0位确定文件类型(d,-,I,c,b)
​            -是普通文件
​            I是链接,相当于windows的快捷方式
​            d是目录,相当于windows的文件夹
​            c是字符设备文件,鼠标,键盘
​            b是块设备,比如硬盘
2.第1-3位确定所有者(该文件的所有者)拥有该文件的权限。 ---User
3.第4-6位确定所属组(同用户组的)拥有该文件的权限,---Group
4.第7-9位确定其他用户拥有该文件的权限---Other

  • 1 :如果是文件,表示硬连接数;如果是目录,表示子目录数
  • root root :前一个是文件所有者,后一个是文件所在组
  • 8440 :表示文件的大小
  • 6月   1 13:55 :表示最后修改时间
  • myhello :文件名
rwx权限详解


  • rwx数字表示 r=4,w=2,x=1
rwx作用到文件


  • 【r】代表可读(read):可以读取,查看
  • 【w】代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
  • 【x】代表可执行(execute):可以被执行
rwx作用到目录


  • 【r】代表可读(read):可以读取,查看目录内容
  • 【w】代表可写(write):可以修改,对目录内创建+删除+重命名目录
  • 【x】代表可执行(execute):可以进入该目录
修改权限-chmod


  • 通过chmod指令,可以修改文件或目录的权限
方式一: + - = 变更权限

u: 所有者
g:   所在组
o:   其他人
a:所有人【u、g、o的总和】

  • 给文件的所有者赋予读写执行权限,给所在组的用户赋予读和执行的权限,给其他组赋予执行的权限:                                                            chmod  u=rwx,g=rx,o=x  文件/目录
  • 给文件的其他用户赋予写的权限:   chmod  o+w  文件/目录
  • 给所有人去掉 执行权限   : chmod  a-x  文件/目录
方式二: 数字 变更权限


  • rwx数字表示 r=4,w=2,x=1
u: 所有者
g:   所在组
o:   其他人
a:所有人【u、g、o的总和】

  • 给文件的所有者赋予读写执行权限,给所在组的用户赋予读和执行的权限,给其他组赋予执行的权限:                                                            chmod  751 文件/目录
  • 给文件的其他用户赋予写的权限:   chmod  o+w  文件/目录
  • 给所有人去掉 执行权限   : chmod  a-x  文件/目录
修改文件所有者-chown


  • 改变所有者:        chown  所有者  文件/目录
  • 改变所有者和所在组:        chown  新所有者:新组  文件/目录
  • 递归改变所有者, -R 如果是目录,对其下所有的子文件或目录递归生效  chown -R  新所有者  文件/目录
  • 递归改变所有者和所在组, -R 如果是目录,对其下所有的子文件或目录递归生效  chown -R  新所有者:新组  文件/目录
修改文件/目录所在组-chgrp


  • 改变所在组:        chgrp  新组  文件/目录
  • 改变目录下所有的文件的所在组:        chgrp   -R  新组  文件/目录
crond - 定时循环任务调度

crontab 进行 定时任务的设置
任务调度:指定系统在某个时间执行的特定的命令或程序
任务调度分类:


  • 系统工作:希望重要的工作必须反复执行
  • 个别用户工作:执行某些程序,比如mysql备份
  • 编辑crontab定时任务:        crontab   -e
  • 查询crontab任务:        crontab   -l
  • 删除当前用户所有的crontab任务:        crontab   -r
  1. */1**** ls -l /etc/ > /tmp/to.txt
复制代码
项目含义范围第一个“*”一小时当中的第几分钟0-59第二个“**”一天当中的第几小时0-23第三个“**”一个月当中的第几天1-31第四个“**”一年当中的第几月1-12第五个“**”一周当中的星期几0-7(0和7都代表星期日)特殊符号:
符号含义示例解释*代表任何时间*每小时的每分钟都执行一次,代表不连续的时间08,12,16***每天的8点0分,12点0分,16点0分都执行一次-代表连续的时间范围05**1-6周一到周六的凌晨5点0分执行命令/代表每隔多久执行一次*/10***每隔10分钟执行一次/n每隔n个单位时间执行一次*/n每隔n分钟、小时等执行一次案例

时间表达式执行时间45 22 * * *每天22点45分0 17 * * 1每周1的17点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号,每周1的0点0分其他指令


  • 终止任务调度:        crontab   -r
  • 列出当前有哪些任务调度:        crontab   -l
  • 重启任务调度:        service  crond  restart
at定时任务 - 一次性定时计划任务

基本介绍


  • at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
  • 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
  • at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了。
  • 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看。
  • 可以通过  ps  -ef  | grep atd  查看当前atd是否启动在运行了
  • 向job队列添加一个作业:        at   [选项]  [时间]
  • Ctrl + D 结束at命令输入
  • 选项含义-m当指定的任务被完成后,将给用户发送邮件,即使没有标准输出-1atq的别名-datrm的别名-v显示任务将被执行的时间-C打印任务的内容到标准输出-V显示版本信息(注意:这里可能存在重复,应为 -v 或其他选项)-q 使用指定的队列-f 从指定文件读入任务而不是从标准输入读入-t以时间参数的形式提交要运行的任务
  • 指定时间的方法:

    • 接受在当天的hh:mm(小时:分钟)式的时间指定:如果指定的时间已过去,任务将在第二天执行。例如,04:00。
    • 使用midnight(深夜)、noon(中午)、teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间
    • 采用12小时计时制:在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如,12pm。
    • 指定命令执行的具体日期:指定格式为monthday(月日)、mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如,04:00 2021-03-15。
    • 使用相对计时法:指定格式为now + count time-units,其中now就是当前时间,time-units是时间单位,可以是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,例如几天,几小时。例如,now + 5 minutes。
    • 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间

  • 删除指定的任务:        atrm    编号
  • 查看任务列表:        atq
Linux分区

基本介绍


  • Linux来说无论有几个分区,分给哪一录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
  • Linux采用了一种叫”载入“的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
硬盘说明


  • Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘。
  • 对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd"表明分区所在设备的类型,这里是指IDE硬盘了。"x"为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~"代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例如,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。【了解即可】
  • 对于SCSI硬盘则标识为"sdx~",SCSI硬盘是用"sd"来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
查看所有设备挂载情况

查看所有设备挂载情况:        lsblk    或者    lsblk  -f【信息更全】
添加一块硬盘

分区命令:        fdisk   /dev/sdb
格式化指令:        mkfs  -t  ext4   /dev/sdb1
挂载指令【挂载:将一个分区和一个目录联系起来】:        mount  设备目录      目录
卸载硬盘:        umount  设备目录      或者   umount  目录

  • 值得注意的是:用命令行挂载的关系是临时的,当系统重启之后,挂载的关系会自动消失!!!
永久挂载/自动挂载


  • 通过修改/etc/fstab实现挂载
  • 添加完成后 执行mount  -a  立刻生效
查看磁盘使用情况


  • 查看系统整体磁盘使用情况:        df   -h
  • 查询指定目录的磁盘占用情况【默认当前目录】:        du   -h     目录
  • -s  指定目录占用大小汇总
  • -h  带计量单位
  • -a  含文件
  • --max-depth=1   子目录深度
  • -c  列出明细的同时,增加汇总值
磁盘情况实用指令


  • 统计文件夹下的文件个数:        ls  -l  /文件夹  |  grep  "^-"  |wc  -l
  • 统计文件夹下的目录个数:        ls  -l  /文件夹  |  grep  "^d"  |wc  -l
  • 统计文件夹下的文件个数,包括子文件夹里的:        ls  -lR  /文件夹  |  grep  "^-"  |wc  -l
  • 统计文件夹下的目录个数,包括子文件夹里的:        ls  -lR  /文件夹  |  grep  "^d"  |wc  -l
  • 以树状显示目录结合  tree 目录【先 yum  install  tree 安装一下 】
网络配置


  • windows 下查看网络配置:        ipconfig
  • Linux下查看网络配置:        ifconfig
  • 测试主机之间网络连通性:        ping    目的主机的ip地址
  • 网络环境配置的具体配置方式:

    • 自动获取:   登录后,通过界面的来设置自动获取ip
      特点:linux启动后会自动获取IP,缺点是每次自动获取的ip地址可能不一样
    • 指定ip:    直接修改配置文件来指定ip,并可以连接到外网
    ​         编辑 vim  /etc/sysconfig/network-scripts/ifcfg-ens33
    1. TYPE="Ethernet"
    2. PROXY_METHOD="none"
    3. BROWSER_ONLY="no"
    4. BOOTPROTO="static"
    5. DEFROUTE="yes"
    6. IPV4_FAILURE_FATAL="no"
    7. IPV6INIT="yes"
    8. IPV6_AUTOCONF="yes"
    9. IPV6_DEFROUTE="yes"
    10. IPV6_FAILURE_FATAL="no"
    11. IPV6_ADDR_GEN_MODE="stable-privacy"
    12. NAME="ens33"
    13. UUID="23626adf-3676-45b2-938b-e6b9864816d8"
    14. DEVICE="ens33"
    15. ONBOOT="yes"
    16. #IP地址
    17. IPADDR=192.168.200.130
    18. #网关
    19. GATEWAY=192.168.200.2
    20. #域名解析器
    21. DNS1=192.168.200.2
    复制代码
  • 重启网络服务:    service  network  restart
设置主机名


  • 为了方便记忆,设置主机名
  • 查看当前主机名:                hostname
  • 修改主机名在文件:                  /etc/hostname  指定
  • 重启生效
如何设置主机名和hosts映射?


  • windows下     过某个主机名找到对应windows系统:   C:\Windows\System32\drivers\etc\hosts  文件指定
  • Linux系统下    通过某个主机名找到对应Linux系统:        在/etc/hosts    文件中指定
Hosts是什么?

​    Hosts 是一个文本文件,用于记录IP和Hostname【主机名】之间的映射关系
DNS


  • DNS是 域名系统
  • 是互联网上作为域名和IP地址相互映射的一个分布式数据库
示例:

  • 当用户在浏览器输入了www.baidu.com
  • 浏览器先检查浏览器缓存中有没有该域名解析IP地址,
  • 有就先调用这个IP完成解析;
  • 如果没有检查操作系统DNS解析器缓存,如果有直接返回IP完成解析。
  • 这两个缓存,可以理解为本地解析器缓存
  • 一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址(DNS解析记录)。
  • 如在cmd窗口中输入:
  • ipconfig/displaydns              //DNS域名解析缓存
  • ipconfig/flushdns                  //手动清理DNS缓存
  • 如果本地解析器缓存没有找到对应映射,检查系统中hosts文件中有没有配置对应的域名IP映射,如果有,则完成解析并返回。
  • 如果本地DNS解析器缓存和hosts文件中均没有找到对应的IP则到域名服务DNS进行解析域
  • 用户输入   →     浏览器缓存    →     DNS缓存【操作系统中】  →    hosts文件  →   DNS【公网上】
进程管理


  • 在LINUX中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)。
  • 每个进程都可能以两种方式存在的。前台与后台。
  • 所谓前台进程就是用户目前的屏幕上可以进行操作的。
  • 后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  • 一 般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
显示系统执行的进程


  • 显示系统执行的进程,以及执行状况:        ps
  • 显示当前终端的所有进程信息:        ps  -a
  • 以用户的格式显示信息:        ps  -u
  • 显示后台进程运行的参数:        ps  -x
  • 通常组合使用:             ps  -aux  | more
ps指令详解

1. ps命令使用示例


  • 命令格式:ps -aux | grep xxx

    • 示例:查看系统中是否存在sshd服务

2. 指令说明(System V展示风格)


  • USER:用户名称
  • PID:进程号
  • %CPU:进程占用CPU的百分比
  • %MEM:进程占用物理内存的百分比
  • VSZ:进程占用的虚拟内存大小(单位:KB)
  • RSS:进程占用的物理内存大小(单位:KB)
  • TT:终端名称,一般显示为缩写
  • STAT:进程状态

    • S:睡眠状态
    • s:会话的先导进程
    • N:拥有比普通优先级更低的优先级
    • R:正在运行
    • D:短期等待
    • Z:僵死进程
    • T:被跟踪或被停止

  • STARTED:进程的启动时间
  • TIME:CPU时间,即进程使用CPU的总时间
  • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
这个命令和说明对于了解Linux系统中进程的状态和性能非常有帮助,可以帮助用户监控和管理正在运行的进程。
全格式显示当前所有的进程,查看进程的父进程


  • 全格式显示当前所有的进程:        ps  -ef 【-e显示所有进程,-f全格式】
  • 可以带上grep 过滤:        ps -ef  | grep 进程 【例如 sshd 远程连接进程】
终止进程


  • 通过进程号终止进程:        kill   进程号
  • 通过进程名称终止进程【子进程也会终止】:        killall   进程名称
  • 通过进程号终止进程【强制终止】:        kill  -9   进程号
查看进程树


  • 查看进程树:        pstree
  • 显示进程的PID:        pstree   -p
  • 显示进程的所属用户:        pstree   -u
服务管理


  • 服务本质就是进程,但是运行在后台,通常会监听某个端口,等待其他程序的请求,比如mysql等,因此又称为守护进程。
service管理指令


  • service  服务名 [start | stop | restart | reload | status]
  • CentOS7.0很多服务用 systemctl来管理
  • service 指令管理的服务 可以在 /etc/init.d/ 查看【ls -l  /etc/init.d/】
  • 查看所有的系统服务:              setup
服务的运行级别

Linux系统有7种运行级别(runlevel):
常用的是级别3和5

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • 运行级别2:多用户状态(没有NFS),不支持网络 运行级别
  • 3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式 运行级别
  • 4:系统未使用,保留 运行级别
  • 5:X11控制台,登陆后进入图形GUI模式 运行级别
  • 6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
Linux开机流程

开机 → BIOS → /boot → systemd → 运行级别 → 运行级对应的服务
设置各个运行级别的自启动/关闭


  • 查看服务  chkconfig  --list | grep  xxx
  • chkconfig  服务名  --list
  • chkconfig  --level  5  服务名  on/off
  • chkconfig  重新设置服务后,需要重启后生效
systemctl管理指令


  • 基本语法:        systemctl [start | stop | restart | status]   服务名
  • systemctl 指令管理的服务在          /usr/lib/systemd/system 查看


  • 关闭或启动了服务后,立即生效,但是只是临时生效,重启系统后,还是会回去以前的服务的设置
  • 希望设置某个服务的自启动或关闭永久生效,还是要使用systemctl  enable  服务名;或   systemctl  disable  服务名 ;
systemctl设置服务的自启动状态


  • 查看服务的自启动状态:        systemctl  list-unit-files
  • 针对某项服务查看:        systemctl  list-unit-files | grep 服务名
  • 设置服务开机启动:        systemctl  enable  服务名
  • 关闭服务开机启动:        systemctl  disable  服务名
  • 查询某个服务是否是自启动:        systemctl  is-enabled  服务名
打开或关闭指定端口


  • 打开端口:        filewall-cmd --permanent --add-port=端口号/协议
  • 查看 端口/协议:        netstat  -anp | more
  • 关闭端口:        filewall-cmd --permanent --remove-port=端口号/协议
  • 重新载入,才能生效:        filewall-cmd --reload
  • 查询端口是否开放:        filewall-cmd --query-port=端口号/协议
动态监控进程


  • top 也是用来显示正在执行的进程。但top和ps最大的不同在于,top 可以在执行一段时间更新正在运行的进程

    • 指定top命令每隔几秒更新。默认3秒:        top -d 秒数
    • top命令不显示任何闲置或僵死进程:        top -i
    • 通过指定监控进程ID来针对监控某个进程的状态:        top -p

交互操作

  • 以CPU使用率排序,默认就是此项:        P
  • 以内存的使用率排序:        M
  • 以PID排序:        N
  • 退出top             q
查看网络状况-netstat


  • 按一定顺序排列输出:        netstat  -an
  • 显示哪个进程在调用:        netstat  -p
软件包管理


  • rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。
  • RPM是RedHatPackageManager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
  • Linux的分发版本都有采用(suse,redhat,centos等等),可以算是公认的行业标准了。
查询rpm包相关信息


  • 查询已安装的rpm列表:        rpm  -qa
  • 指定查询已安装的rpm列表:        rpm  -qa | grep 软件包名
  • 查询软件包是否安装:        rpm  -q  软件包名
  • 查询软件包信息:        rpm  -qi  软件包名
  • 查询软件包中的文件:        rpm  -ql  软件包名
  • 查询文件所属的软件包:        rpm  -qf  文件全路径
卸载rpm包


  • 卸载删除指定rpm包:        rpm  -e  RPM包的名称
  • 强制卸载删除指定rpm包【不推荐】:        rpm  -e  --nodeps   RPM包的名称
安装rpm包


  • 安装指令:        rpm   -ivh    RPM包的全路径名称  【i=install安装;v=verbose提示;h=hash进度条】
yum


  • Yum是一个shell前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

  • 查询yum服务器是否有需要安装的软件:        yum  list | grep 软件列表
  • 安装指定的yum包        :yum  install  软件包
Shell编程

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell执行的方式


  • 创建时,约定俗成 .sh结尾
  • 脚本以 #!/bin/hash开头
  • 脚本需要有可执行权限
  • 如果要运行,需要赋予权限 可以 chmod  u+x  脚本名
  • 也可不赋予权限 ,但是需要用  sh 脚本名 来运行
Shell脚本的多行注释

:内容

Shell变量


  • Linux中 Shell中的变量分为,系统变量和用户自定义变量
  • 系统变量: $HOME、$PWD、$SHELL、$USER等等,比如echo $HOME
  • 显示当前shell中的所有变量:     set
Shell变量的自定义


  • 定义变量:变量名=值
  • 撤销变量: unset变量
  • 声明静态变量:  readonly变量,注意不能unset
Shell变量规则


  • 变量名称可以由字母、数字、下划线组成,但是不能以数字开头
  • 等号两侧不能有空格
  • 变量名称一般习惯为大写,【规范】
  • 将命令的返回值赋给变量,用 反引号``
    1. A=`date`      date命令的返回值赋给变量A
    2. A=$(date)等价于反引号
    复制代码
设置环境变量


  • 将Shell变量输出为环境变量/全局变量:        export  变量名=变量值
  • 让修改后的配置信息立即生效::        source  配置文件
  • 查询环境变量的值:        export  $变量名
位置参数变量


  • 执行Shell脚本时,可以通过位置参数变量来获取到命令行的参数信息
  • 比如在命令行输入:       ./myshell.sh  200  100
  • 变量符号功能描述$nn为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如$$*这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体$@这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待$#这个变量代表命令行中所有参数的个数
预定义变量


  • 预定义变量就是Shell设计者事先定义好的变量,可以直接在shell脚本中使用
  • 当前进程的进程号【PID】       $$
  • 后台运行的最后一个进程的进程【PID】           $!
  • 最后一次执行的命令的返回状态。        $?
  • ​    $?       如果这个变量值为0,证明上个命令正确执行;
  • ​    $?       如果这个变量的值为非0,则证明上个命令执行不正确
运算符


  • $[运算式]  或者  $((运算式))   或者    expr  m  +  n【expr 间要有空格,结果如果要赋给变量用反引号】
    1. expr \*乘   /除    %取余
    复制代码
条件判断


  • if [ condition ] 非空为true,可以使用$?验证 (0为true  ,   >1为false)
  • 字符串比较  =
  • 两个整数比较    小于lt       小于等于le      等于eq     大于gt     大于等于ge      不等于ne
  • 按文件权限判断       有读的权限-r         有写的权限-w       有执行的权限-x
  • 按照文件类型判断      文件存在并且是常规文件-f          文件存在-e        文件存在并且是个目录-d
流程控制

单分支
  1. if [ 条件判断式 ]
  2. then
  3.         代码
  4. fi
复制代码
多分支
  1. if [ 条件判断式 ]then        代码elif [ 条件判断式 ]
  2. then
  3.         代码
  4. fi
复制代码
case语句
  1. case $变量名 in
  2. "值1")
  3.         代码
  4. ;;
  5. "值2")
  6.         代码
  7. ;;
  8. *)
  9.         代码
  10. ;;
  11. esac
复制代码
循环控制

for循环

方式1
  1. for 变量 in 值1 值2 值3
  2. do
  3.         代码
  4. done
复制代码
方式2
  1. for ((初始值;循环控制条件;变量变化))
  2. do
  3.         代码
  4. done
复制代码
While循环
  1. while[ 条件判断式 ]
  2. do
  3.         代码
  4. done
复制代码
读取控制台输入-read


  • 指定读取值的提示信息:          read -p "提示信息"  变量名
  • 指定读取值时等待的时间 秒,如果没有在知道时间内输入,不在等待:             read   -t   时间   -p "提示信息"  变量名
函数

shell编程有系统函数也可以自定义函数。
系统函数

basename


  • 返回完整路径最后 / 的部分,常用与获取文件名:        basename [ pathname ]
  • 带上 suffix后缀,basename 会将前缀和后缀都去掉:           basename [ pathname ] [ suffix ]
  • [pathname] 也可以是 string
dirname


  • 返回完整路径最后 / 的前面部分,常用于返回路径部分
  • 用法和basename 相反
自定义函数

定义
  1. function  funname(){
  2.         代码
  3.         return int
  4. }
复制代码
调用
  1. funname [值]
复制代码
来源:https://www.cnblogs.com/zydevelop/p/18238568/zy_linux
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具