duduru

Linux笔记

[root@VM-8-5-centos ~]# ls -d ...

root:当前用户
VM-8-5-centos:主机名
~:当前所在文件夹
#:命令提示符(root用户,$:普通用户)
-:命令描述,-表简写,–表全称(directory)

挂载点

挂载概述

在这里插入图片描述
挂在实现了文件系统与硬盘物理结构的隔离
如上图所示,硬盘SDA1划分了两个区域,其中2区挂载在根目录下,而属于2区根目录下的boot挂载在1区,对boot的操作变成了对1区的操作。
同样的,若此时有一名用户想独自使用一块硬盘存放自己的信息,它只需要将硬盘SDA2挂载在home下。从系统层面上来看,操作此用户与其它用户无异。
在这里插入图片描述

挂载的过程

存储设备:分区–>按文件系统格式化–>挂载

挂载的意义

挂载不仅仅是将存储设备映射到Linux下的一个目录那么简单。
将光盘(cdrom)挂载到/mnt/cdrom下:

 mount /dev/cdrom /mnt/cdrom/

如果我们不挂载光盘设备,直接去访问/dev/cdrom,系统会提示它不是目录。查看详细信息会发现它属于块设备文件(光盘,磁盘等存储设备都属于块设备),它其实是一个类似指针的东西,指向这个分区的原始数据块。也就是说,在mount之前,系统并不知道这个数据块的文件目录组织形式,不知道哪个数据块代表文件。

通过mount [-t vfstyoe] 操作来指定文件系统的类型(通常不必指定,mount会自动选择正确的类型),然后挂载,系统就知道这个设备的文件目录结构,从而能够访问设备上的文件。

总结

在Linux看来,任何硬件设备都是文件,都有一套属于自己的文件系统(文件目录结构),因此问题就是,当Linux使用这些硬件时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所有。合二为一这个过程成为挂载

硬盘分类:

  • HDA:IDE
  • SDA:SATA,SCSI
  • VDA:虚拟化硬盘
    VAB,SDB表示第二块硬盘,SDB2表示第二块硬盘的第二个分区

vim

普通模式:复制,粘贴,删除

y:复制
p:粘贴
y+$/^:从光标向前(向后)复制
yy:整行复制
y+w:复制单词(从光标开始)

d:删除
u:撤销

G:跳转到尾部
gg:跳转到头部

命令模式

:set nu(nonu):显示(隐藏)行号
/word:查找单词word(n:下一个)
%s/y/x/g:y全局替换x

系统管理

进程和服务

进程:一个正在执行的程序命令(cd,ls等命令,属于进程,用完即销毁)
服务:计算机启动之后一直存在,常驻内存的进程

服务概述

服务的基本语法

centos6:service 服务名 start|stop|restart|status
centos7:systemctl start|stop|restart|status 服务名
查看系统服务:ls /usr/lib/systemd/
查看其它服务:ls /usr/lib/systemd/system

服务的开机自启动

在这里插入图片描述
开机自启动状态修改:systemctl enable/disable 服务名
当前状态修改:systemctl start/stop 服务名

常用基本命令

帮助命令

  • man:获得帮助信息(外部命令)
man ls
  • help:获得shell内置命令的帮助信息(内部命令。一部分基础功能的命令是内嵌在shell中的,会随着shell一起加载,常驻在内存中)
help cd

内部命令和外部命令判断:type

  • 命令 --help:获得命令的简略信息

文件目录命令

目录命令
  • pwd:当前工作区的绝对路径
    • -P:物理路径(针对软连接)
  • cd:切换路径
    • /root/decktop(绝对 . ./ :上一级 ./:本级
    • -:在两个文件夹下切换
    • (空):回到用户目录
  • ls:列出目录内容
    • -a:全部文件(连同隐藏文件)
    • -l:长数据串列出,包含文件属性和权限(ll是其别名)
  • mkdir:创建文件夹
  • rmdir:删除文件夹
    • -p:递归创建(删除)文件夹
文件命令
  • touch:创建空文件
  • cp source dest:复制source文件(目录)到dest
    • -r:递归复制文件夹
  • rm:删除文件(目录)
    • -r:递归删除文件夹
    • -f:强制删除
    • -v:显示指令的详细执行过程
  • mv:移动文件(目录),可实现重命名
  • cat:查看文件内容
  • more:文件内容分屏查看器
  • less:文件内容分屏查看器(大型文件)
查找命令
  • find:查找文件(目录)
    • -name:查找当前目录下名为name的文件(目录)
  • grep:查找文本(可以找出指定文本,但不能找出同名的文件)
    • -n:显示文本及其所在行
    • -r:递归查找
其它命令
  • echo:将内容显示到控制台
    • -e:允许转义字符
    • $:查看系统环境变量
  • >:输出重定向(覆盖)
  • >>:输出重定向(追加)
    • ls > info:将ls输出在控制台的内容重定向到info文件中
    • echo “hello world” >> info
  • ln:链接
    • -s [原文件或目录] [软连接名]:给原文件或目录创建软链接

时间日期命令

  • date +“%Y- %m- %d”

用户权限命令

用户命令
  • useradd:添加用户
    • -d [用户文件夹] [用户名]:指定目录下创建用户
    • -g:将用户添加到指定组
  • passwd:给指定用户设置密码
  • id:查看用户是否存在
  • cat /etc/password:查看当前系统用户
  • userdel:删除用户
    • -r:同时删除用户文件夹
  • usermod:修改用户
    • -g:修改用户所属用户组
  • su:切换用户
    • 使用su切换用户属于嵌套操作,即从root切换至user1,最外层还是root,只是通过root创建了一个user1会话。通过exit退出该会话就可回到上一级用户。
    • whoami:查看当前用户名字
    • who am i:查看根用户名字
  • sudo:设置普通用户具有 root权限
    • 通过/etc/sudoers文件可配置sudoer用户
用户组命令
  • groupadd/groupdel/groupmod
用户权限概述

在这里插入图片描述

  • 权限解释
    属主权限(user):文件所属用户的权限
    属组权限(group):文件所属用户组成员的权限
    其他用户权限(other):其他用户的权限
    (-:没有权限)
  • rwx作用
    (1) 作用到文件
    [r] 代表可读(read):可以读取,查看
    [w] 代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
    [x] 代表可执行(execute):可以被系统执行
    (2) 作用到目录
    [r] 代表可读(read):可以读取,ls查看目录内容
    [w] 代表可写(write):可以修改,目录内创建+删除+重命名目录
    [x] 代表可执行(execute):可以进入该目录

在这里插入图片描述

用户权限修改
  • chmod:修改用户权限
    • chmod {ugoa} {±=} {rwx} 文件或目录
      • u-用户,g-组,o-其他人,a-所用人
      • +:增加权限,-:删除权限,=:赋予权限
      • chmod u+x test.txt
    • chmod {421} 文件或目录(对应二进制)
      • chmod 644 = -rw-r--r--
    • -R:递归赋予权限
  • chown:修改文件(目录)所属用户(:用户组)
    • chown chen test.txt
    • chown chen:chen test.txt
  • chgrp:修改文件(目录)所属用户组
    • chgrp chen test.txt

搜索查找命令

  • find:从指定目录下递归查找子目录
    • find [搜索范围] [选项]
    • find xiyou/ -name “*.txt”
    • find xiyou/ -size +10M

在这里插入图片描述

  • locate:快速定位文件路径
    • 利用事先建立的locate数据库快速定位文件,无须遍历,查询速度快,但需要updatedb更新
    • updatedb
      locate tmp
  • grep:过滤查找及"|"管道符
    • grep:用于查找文件中符合条件的字符串
    • |:将两个命令分开,管道符左边命令的输出作为右边命令的输入
    • ls | grep .cfg
    • grep -n boot initaill.cfg | wc
    • 常用的全局搜索grep “x” /y : 搜索/y(*即所有文件)文件的包含"x"的部分(-n:显示行号;-r:递归搜索)

压缩解压命令

  • gzip:压缩文件(压缩为.gz,且只能压缩文件)
    ungzip:解压
  • zip:压缩文件或目录(压缩为.zip,可以压缩目录)
    unzip:解压
  • tar:打包目录并压缩,压缩为.tar.gz
    • tar -zcvf temp.tar.gz /root/test.txt baga.txt

在这里插入图片描述

磁盘管理命令

  • du:查看目录下其子目录占用空间大小
  • du -sh 查看当前目录占用磁盘空间大小
    在这里插入图片描述
  • df -h:查看磁盘空间用量
  • free -h:查看内存空间用量
  • lsblk:查看硬盘分区挂载情况
    • -f:查看各分区的文件系统信息
  • mount [-t vfstype] device dir:挂载设备
  • unmount:卸载设备
  • fdisk:分区
    • -l:查看磁盘分区详情
    • device:对磁盘进行分区操作

进程管理命令

查看进程
  • ps:查看当前系统进程状态
    在这里插入图片描述
    • aux:查看CPU占用率和内存占用率
    • -ef:查看父进程PID
  • kill:终止进程
  • pstree:进程树,查看父子进程关系
  • top:实时监控系统运行和状
  • netstat:显示网络状态和端口占用信息
    在这里插入图片描述
  • crontab:定时执行任务
进程详情

在这里插入图片描述
举例:查看sshd进程:

ps -ef | grep sshd

得到:

root      1367     1  0 Sep15 ?        00:00:03 /usr/sbin/sshd -D
root     11604 18964  0 11:40 pts/0    00:00:00 grep --color=auto sshd
root     18957  1367  0 07:55 ?        00:00:00 sshd: root@pts/0

分析sshd进程,可以发现它(1367)首先由1号进程创建(即开机启动初始化时创建的sshd服务),之后我们通过xshell进行ssh远程连接,1367进程创建18957子进程,用于虚拟终端实现远程交互。

软件包管理命令

  • rpm:安装rpm软件包
    • rpm包名称格式:
      在这里插入图片描述
    • -qa:查询已安装的所有rpm包
    • -e:卸载软件包
    • -ivh rpm包全名:安装软件包(与卸载不同,安装需要提供全名)
  • yum:安装rpm软件包
    • 与rpm不同点:可以自动处理依赖关系(类似于maven);不用提供全名
      在这里插入图片描述
  • apt和dpkg(ubuntu): apt和deb解析

Shell编程

解释型语言与编译型语言

链接: 解释型语言与编译型语言的区别

Shell脚本格式
  • 内容以#!/bin/bash开头
  • 文件名以.sh结尾
Shell执行
  • bash或sh 脚本路径(不需赋予x权限)
    bash ./hello.sh
  • 直接输入脚本路径(需赋予x权限)
    • chmod +x hello.sh
    • ./hello.sh
  • . 或source 脚本路径
    • 前两种方式都是在当前shell中打开一个子shell来执行脚本,当脚本结束后,子shell关闭,回到父shell;此方式不需要打开子shell,直接在当前shell执行
    • 父子shell的最大区别,在于环境变量的继承关系
    • . hello.sh
Shell变量
普通变量
  • 按定义分类
    • 系统变量
      • $ HOME,$ PWD…
    • 自定义变量
      • 变量名=变量值
      • 撤销变量:unset 变量名
      • 只读变量:readonly 变量名(不能unset)
  • 按作用范围分类
    • 全局变量
      • 作用于当前shell于其子shell,不能影响父shell
        my_var=5
        export my_var
        bash
        my_var=6
        output:第一层bash的my_var不变
    • 局部变量
      • 只作用于当前shell

使用变量名=变量值定义的变量属于局部变量,升级为全局变量的方法是使用export 变量名

  • env:查看全局变量
  • set:查看全部变量(全局+局部)
特殊变量
  • $n:n为数字,0代表脚本名称,1-9代表第一到第九个参数
  • $#:获取输入参数个数
  • $*:获取命令行所有参数(把所有参数看成一个整体)
  • $@:获取命令行所有参数(把所有参数区别对待)
  • $?:最后一次执行命令的返回状态。0:命令执行正确;非0:不正确

运算符

  • $((表达式)) 或 $[表达式]

  • 注:$(命令)属于命令替换

    s=$[2+3*4]

条件判断

  • test 表达式
  • [ 表达式 ] (注意两边有空格,表达式之间也要空格)

在这里插入图片描述

  • -a:逻辑与
  • -o:逻辑或
[ 2 -lt 8 ]
[ -r hello.sh ]

函数

shell中的函数和脚本类似,函数是轻量级的脚本。
使用$(命令)进行命令替换,达到把命令当成函数使用的目的。

系统函数
自定义函数

posted on 2024-06-27 21:13  duduru  阅读(0)  评论(0)    收藏  举报  来源

导航