linux基础命令学习

目录结构

  1. 基本思路: 一切皆文件

  2. 树状结构存储. 根目录/

    /
    |_dev 设备文件(映射为文件,cpu,gpu等)
    |_media 媒体文件(**u盘,光驱,linux识别后将设备挂载到该目录下**)
    |_boot 启动文件(**启动linux需要使用的一些核心文件,包括一些链接文件和镜像文件**)
    |_etc 配置文件(**mysql等配置文件均存放在该目录下,环境变量文件**)
    |_mnt 挂载目录(**挂载别的文件系统,可以将外部的存储挂载到/mnt**)
    |_opt 安装软件存放的目录(**optional随意可选的 如安装mysql软件前,可以将安装软件先放到该目录下,默认为空**)
    |_/usr/local(**安装完软件后,会存放到该目录下,如mysql源码安装后,在目录下会出现/usr/local/mysql**)
    |_sbin super指令(系统管理员使用的指令)
    |_bin 经常使用的指令(chmod chown copy rm...)
    |_selinux 安全相关(security enhanced linux)
    |_var 变量目录(存放日志等)
    |_usr 资源目录(存放用户安装的程序 Unix Software Resource, 类似win中的Program files目录)
    |_lib 动态链接共享文件
    |_lost+found 一般是空的,系统非法关机后里面会存放一些文件
    |_proc 内核目录(别动)
    |_sys (别动)
    |_srv 服务启动后需要提取的数据(别动)
    |_tmp 存放临时文件
    

vi vim

  • 具有三种模式
    1. 正常模式,进入vim时候默认模式,可以-删除字符/行, -复制/黏贴
    2. 插入/编辑模式
    3. 命令行模式,refresh, exit, 显示行号,字符串查找/替换等
  • 常用快捷键
    1. 拷贝当前行yy, 拷贝当前行向下5行 5yy, 输入单词p进行paste
    2. 删除当前行dd, 删除当前行线下5行 5dd,
    3. 查找 / , 单词n向下查找, shift + n 反方向向上查找
    4. 末行-G 首行-gg
    5. 撤销 u
    6. :set nu 显示行号, 取消行号 :set nonu
    7. 跳到指定行 输入行号如78, 输入shift + g
    8. :e 刷新文件

关机&重启

  • shutdown
    1. Shutdown -h now 立即关机
    2. shutdown -h 1 1分钟后关机
    3. shutdown -r now 立即重启
  • halt 等价于关机
  • reboot 重启
  • sync 同步命令,执行后看不到命令界面变化,会将内存中的数据dump

用户管理

  • 用户组: 用户至少隶属于一个组,e.g ylj本身属于ylj组, 相当于role角色
  • home: 每个用户都会在/home中有一个目录,e.g ylj home目录在/home/ylj

用户操作

  • 添加用户

    ## 1.添加用户,系统在home目录中新创建一个文件夹[用户名]
    useradd [用户名]
    
  • 删除用户

    ## 1.删除用户,不删除家目录文件(推荐!!)
    userdel [用户名]
    ## 2.删除用户,删除家目录
    userdel -r [用户名]
    
  • 查询用户

    ## 查询用户信息
    id [用户名]
    [root@iZbp1flxncfu0h0dxkv75uZ home]# id ylj
    uid=1000(ylj) gid=1000(ylj) 组=1000(ylj)
    uid: 用户id
    gid:所在组id
    组: 组名
    
  • 切换用户

    ## 创建用户 切换用户 
    [root@iZbp1flxncfu0h0dxkv75uZ home]# useradd zf    //创建用户
    [root@iZbp1flxncfu0h0dxkv75uZ home]# ll
    总用量 8
    drwx------ 2 ylj ylj 4096 12月  5 15:57 ylj
    drwx------ 2 zf  zf  4096 12月  5 16:13 zf
    [root@iZbp1flxncfu0h0dxkv75uZ home]# su - zf			//切换用户,高权限账户切换低权限用户,无需输密码
    [zf@iZbp1flxncfu0h0dxkv75uZ ~]$ cd /root/
    -bash: cd: /root/: Permission denied							//低权限账户无法查看
    [zf@iZbp1flxncfu0h0dxkv75uZ ~]$ exit							//退出,进入高权限账户
    logout
    [root@iZbp1flxncfu0h0dxkv75uZ home]# 							//恢复root
    

组操作

  • 组增删
## 添加组
groupadd [组名]
## 删除组
groupdel [组名]
  • 创建用户时候添加组

    [root@iZbp1flxncfu0h0dxkv75uZ home]# groupadd wudang					//创建组
    [root@iZbp1flxncfu0h0dxkv75uZ home]# useradd -g wudang zwj		//创建用户同时添加到指定组
    [root@iZbp1flxncfu0h0dxkv75uZ home]# ll												//home目录下增加了人员
    总用量 12
    drwx------ 2 ylj ylj    4096 12月  5 15:57 ylj
    drwx------ 2 zf  zf     4096 12月  5 16:14 zf
    drwx------ 2 zwj wudang 4096 12月  5 16:24 zwj
    [root@iZbp1flxncfu0h0dxkv75uZ home]# id zwj										//查询到用户已隶属于指定的组
    uid=1002(zwj) gid=1002(wudang) 组=1002(wudang)
    
  • 修改用户组

    [root@iZbp1flxncfu0h0dxkv75uZ home]# groupadd shaoling				//添加组
    [root@iZbp1flxncfu0h0dxkv75uZ home]# usermod -g shaoling zwj  //将zwj修改到该组
    [root@iZbp1flxncfu0h0dxkv75uZ home]# id zwj
    uid=1002(zwj) gid=1003(shaoling) 组=1003(shaoling)
    

相关配置文件

  • 用户配置文件(存储了用户信息)

    /etc/passwd
    
    image-20201205163524836
  • 组信息文件(组信息)

    /etc/group
    
  • 口令配置文件(存储密码和登录信息,加密存储)

    /etc/shadow
    

运行级别(runlevel,target)

Linux 运行级别相当于系统的运行状态,比如win中杀毒的时候要F8进入紧急模式一样

在引入systemctl后,运行级别(runlevel)用target来代替

查看当前target----systemctl get-default

# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
  1. 0-关机
  2. 1-单用户(找回丢失密码)
  3. 2-多用户无网络
  4. 3-多用户有网络
  5. 4-保留
  6. 5-图形界面
  7. 6-重启

常用指令

文件目录类

pwd

  • 显示当前工作目录的绝对目录

ls

  • ls -alh
  • -a 包含隐藏文件
  • -l 已列表的形式显示
  • -h 按人阅读的格式显示 如大小使用M单位等

mkdir

  • mkdir -p /home/ylj/test/test
  • -p 递归创建,/test不存在时自动创建

rmdir

  • rmdir 【空目录】只能删除空目录

rm -rf

  • -r recurse递归
  • -f 强制
  • rm -rf [目录]

touch

  • touch 文件名, 文件不存在会自动创建,文件已存在则会刷新文件访问时间

cp

  • cp -r source dist
  • 递归拷贝文件夹
  • cp 源文件 目录文件 , 拷贝的同时可以重命名
  • cp aaa.txt bbb/ 将aaa.txt文件拷贝到bbb目录下
  • cp -r dir1 dir2/ 将dir1整个目录拷贝到dir2目录下
  • \cp -r dir1 dir2/ 将dir1整个目录拷贝到dir2目录下,若重复,则强制覆盖

mv

  • mv oldFileName newFileName, 当操作前后的文件都在同一个目录下是 重命名操作
  • mv srcFileName dir/dstFileName, 当操作前后的文件不是在同一个目录下市 移动操作

cat

  • concatenate 连续
  • 只读形式获取文件信息
  • cat -n /etc/profile 显示行号
  • cat -n /etc/profile | more 分页显示

more

  • 基于vi编辑器的文本过滤器,以全屏方式按页显示文本文件内容,more指令中内置了若干快捷键
  • 快捷键
    • ctr + b 向前翻1页
    • ctr + f 向后翻1页
    • Space空格键 向后翻1页
  • 一次将文件都读入到内存中

less

  • 跟more功能类似,分屏查看文件内容,根据显示需要加载内容到内存中,效率更高,适合超大的文件日志
  • 快捷键
    • space空白键 向下翻页
    • [pageDown] 向下翻1页
    • [pageUp] 向上翻1页
    • / 字符串 向下搜索字符串同vim n向下 N项上(shift + N)
    • ?字符串 向上搜索字符串
    • q 离开同more

> & >>

  • > 覆盖输出

  • >> 追加输出

  •   ## 例子
      ls -al > file.txt 覆盖输出
      ls -al >> file.txt 追加输出
      cat 文件1 > 文件2  将文件1的内容覆盖输出到文件2,目标文件不存在则创建
      echo "内容" > file.txt 
    

echo & head & tail

  • Echo

    ## 输出环境变量
    echo $PATH
    
  • Head

    ## 显示文件中前几行
    head -n 10 /etc/profile
    
  • tail

    ## 显示文件中的后几行, 以1000位窗口大小刷新日志
    tail -1000f log 
    

ln

  • 软链接,类似于win中的快捷方式

    ## 基本语法
    ln -s [源文件或目录] [软连接名]
    ## 例子1 在/home目录下创建1个软连接linkToRoot, 连接到/root目录
    ln -s /root linkToRoot
    ## 例子2 删除软连接 linkToRoot
    rm -rf linkToRoot
    
  • 硬链接

history

  • 查看已经执行过的指令

    ## 显示所有的历史指令
    history
    
  • 查看最近执行过的10条指令

    history 10
    
  • 直接执行编号为127的clear指令

    [root@iZbp1flxncfu0h0dxkv75uZ ~]# history 10
      123  cd /root/
      124  ls
      125  rm -rf linkToRoot/
      126  rm -rf linkToRoot
      127  clear
      128  history
      129  history 1-
      130  history 10
      131  clear
      132  history 10
    [root@iZbp1flxncfu0h0dxkv75uZ ~]# !127    
    
  • 持久化

    ## 将日志立即写入~/.bash_history文件中
    history -w
    

时间日期类

date

  • 查看时间

    • Date 显示当前时间
    • date +%Y 显示当前年份
    • date +%m 显示当前月份
    • date +%d 显示当前天
    • date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
  • 设置时间

    • Date -s 时间字符串

      ## 例子
      date -s "2018-10-10 11:22:12
      

cal

  • Calendar

    # 显示当前日历
    cal 
    # 查看1年日历
    cal 2020
    

搜索类

whereis

  • 查找程序相关的文件(二进制文件, 配置文件,man文件等)

    whereis nginx
    

find

  • 按文件名,查找在/home目录下文件名为hello.txt文件

    ## 在指定目录下递归搜索文件
    find /root -name hello.txt
    find 搜索范围 -name 文件名
    ## 通配符查找,查找txt文件
    find / -name *.txt 
    
  • 按拥有者,查找/opt目录下,文件拥有者为nobody的文件

    find /opt -user nobody
    find /opt -user root
    
  • 按大小, 查找系统中文件大小大于20m的文件(+n -- 大于 , -n -- 小于, n -- 等于)

    ## 经常适用磁盘清理,在根目录下找到文件大于20m的文件
    find / -size +20m
    ## 
    

locate

  • locate指令可用于快速定位文件路径。locate需要事先建立系统文件索引。

  • locate是基于数据库进行查询,所以运行前,必须使用updatedb创建数据库

    ## 使用locate 快速定位hello.txt文件所在目录
    
    

grep

  • 例: 在hello.txt文件中,查找yes所在的行,并且显示行号

    cat hello.txt | grep -ni yes 
    -n 显示行号number
    -i 忽略大小写ignore
    

压缩类

gzip & gunzip

  • 该指令压缩后原文件消失,产生新的gz文件

    ## 压缩例子
    gzip hello.txt 
    ## 结果
    原文件变成hello.txt.gz, 且体积小了很多
    

zip & unzip

  • (常用)该指令不会删除原先的目录

    ## 压缩 zip -r 压缩文件名.zip 需要压缩目录
    zip mypackage.zip /root/test2/ --> 打包的目录中会有root
    zip mypackage2.zip /test2/*    --> 打包的目录中不会有root
    zip -r mypackage2.zip /test2/* --> 递归压缩
    ## 解压缩 unzip -d [解压的目录] [解压文件]
    unzip -d /opt/tmp mypackage2.zip --> 在/opt/tmp下产生解压文件夹test
    

tar

  • 该指令同时支持压缩和解压

    • -z 打包的同时压缩
    • -c 产生tar包打包文件
    • -v 详细信息
    • -f 指定压缩有文件名
    • -x 解压.tar文件
    ## 压缩多个文件 将/home/a1.txt, /home/a2.txt 压缩成 a.tar.gz
    tar -zcvf [打包压缩文件.tar.gz] [文件1] [文件2] [文件3]。。。
    tar -zcvf a.tar.gz a1.txt a2.txt
    ## 压缩目录 将/home目录压缩成 myhome.tar.gz
    tar -zcvf myhome.tar.gz /home/
    tar -zcvf myhome.tar.gz /home/*  (* 可不写)
    ## 解压到当前目录 a.tar.gz到当前目录
    tar -zxvf [打包压缩文件.tar.gz]
    tar -zxvf a.tar.gz
    ## 解压到特定目录 /opt/tmp, tmp目录必须已存在
    tar -zxvf [打包压缩文件.tar.gz] -C [目标目录]
    tar -zxvf a.tar.gz -C /opt/tmp
    

网络类

wget

## 下载网络资源并且以指定路径和命名保存
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo

curl

## 下载网络资源并且重命名保存到指定路径
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

RPM & YUM

RPM (RedHat Package Manager)

  •   ## 查询已安装软件
      rpm -qa | grep '包名'
      rpm -qa | more
      
      ## 软件包详细信息, 安装时间,软件描述等
      rpm -qi python 
      
      ## 查询软件包在系统中共安装了哪些文件
      rpm -ql python
      
    

卸载

rpm -e python

YUM

  • 维护了网络RPM包服务仓库,安装时提供网路下载功能

  • 添加了依赖下载功能,原始的rmp包安装检查依赖失败后需要用户手动安装依赖

    yum会检查依赖,对缺失依赖自动安装。

  •   ## 查询yum服务器中是否有软件
      yum list | grep xx
      ## 安装
      yum install firefox
      ## 移除
      yum remove firefox
      ## 查看软件描述
      yum info [软件名称 e.g mysql-community-client] 
    
  • 配置源

    vim /etc/yum.repos.d/yum.repos
    
  • 缓存源的软件包索引

    yum makecache fast
    
  • 清除缓存

    yum clean all
    

进程管理

  • 基本知识
    1. 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程
    2. 每个进程有两种方式存在, 前台进程和后台daemon进程

查看进程

  • ps ( report a snapshot of the current processes.)

    -a : 所有进程信息

    -u : 以用户格式显示

    -x : 显示后台进程运行的参数

  • pstree 以树状显示进程

  • image-20201206232945170

  • 例子

    ## 查看系统所有进程
    ps -aux | grep sshd
    
    ## 需要查看进程的父进程PPID
    ps -ef | grep sshd
    

终止进程

  • kill

  • 例子

    ## 例1 踢掉某个非法登录用户 jack
    -bash-4.2# ps -aux | grep sshd
    root       959  0.0  0.1 112924  2732 ?        Ss   9月09   0:00 /usr/sbin/sshd -D
    root     10054  0.1  0.3 157512  5872 ?        Ss   23:42   0:00 sshd: jack [priv]
    jack     10066  0.2  0.1 157832  2792 ?        S    23:42   0:00 sshd: jack@pts/3,pts/4
    root     10952  0.0  0.0 112824   976 pts/1    S+   23:43   0:00 grep --color=auto sshd
    root     26469  0.2  0.3 157836  6384 ?        Ss   22:28   0:09 sshd: root@pts/1,pts/2
    -bash-4.2# kill 10066
    
    ## 例2 终止远程登录服务sshd, 在适当的时候再次重启
    kill 959
    
    ## 例3 终止多个gedit 编辑器
    killall gedit
    
    ## 例4 强制杀死一个终端
    kill -9 [PID]
    

开机流程

  1. 开机-》 BIOS -》 /boot -》init进程 -》运行级别(决定要启动哪些服务) -》 运行级别对应的服务

进程监控

  • 动态监控进程(命令运行期间会更新结果) top, 类似win中任务管理器

    top -d 秒数(默认3秒) -i 不显示僵死/闲置进程 -p 要监控的进程PID

  • 交互操作

    u --> 指定要监控的用户进程

    k --> 进入杀死进程模式,输入PID即可杀死

    P --> 以CPU使用率排序,默认就有该项

    M --> 以内存的使用率排序

    N --> 以PID排序

    q --> 退出top

网路监控

  • netstat -anp | more
  • netstat -tunlp

组管理和权限管理

  • 文件的拥有者和组 默认是文件创建者 和 文件创建者所在的组 (chmod 改变文件)

    ## 查看文件所有者
    ls -alh [文件]
    ls -alh ok.txt
    [tom@iZbp1flxncfu0h0dxkv75uZ ~]$ ls -alh ok.txt
    -rw-r--r-- 1 tom police 0 12月  6 13:00 ok.txt  ## 文件own:tom, 组:police
    
    ## 修改文件所有者
    -bash-4.2# touch apple.txt 											## 创建文件
    -bash-4.2# ls -alh apple.txt 										## 查看文件权限
    -rw-r--r-- 1 root root 0 12月  6 13:05 apple.txt 
    -bash-4.2# chown tom apple.txt 									## 修改文件拥有者为tom,但是group还是root
    -bash-4.2# ls -alh apple.txt 										
    -rw-r--r-- 1 tom root 0 12月  6 13:05 apple.txt
    -bash-4.2# 
    
    ## 修改文件所在组,默认组为创建者所在组
    -bash-4.2# touch apple.txt											## 创建apple.txt
    -bash-4.2# ls -alh apple.txt 										## 默认所有者为root,组root
    -rw-r--r-- 1 root root 0 12月  6 14:44 apple.txt
    -bash-4.2# chgrp police apple.txt 							## 修改组为police
    -bash-4.2# ls -alh apple.txt 
    -rw-r--r-- 1 root police 0 12月  6 14:44 apple.txt 
    
  • 改变用户所在组 (usermod 改变用户)

    ## 创建一个土匪组(bandit), 将用户tom从police组--》bandit组
    -bash-4.2# groupadd bandit											## 创建1个土匪组
    -bash-4.2# id tom																## 查看用户tom在哪个组
    uid=1003(tom) gid=1004(police) 组=1004(police)
    -bash-4.2# usermod -g bandit tom								## 将tom修改到土匪组
    -bash-4.2# id tom																## 
    uid=1003(tom) gid=1006(bandit) 组=1006(bandit)
    
    
  • 权限管理 (chmod)

    • 方式1:通过 + - = 赋予权限rwx
    ## rwx作用在文件
    r->可读写  w->可修改文件内容  x->可执行文件
    ## rwx作用在目录
    r->可查看目录内容  w->可创建修改删除目录内容  x->可进入该目录
    
    ## 修改文件和目录权限指令 chmod
    ## chmod u:所有者 g:组 o:其他  a:所有人
    chmod u=rwx,g=rx,o=x [文件/目录名]   ## 给文件/目录授予权限
    chmod o+w [文件/目录名]							## 给文件/目录其他人添加写权限
    chmod a-w [文件/目录名]							## 取消所有人的写权限
    
    ## 案例1
    ## 给abc.txt 所有者rwx权限,所在组rx权限,其他组rx权限
    -bash-4.2# touch abc.txt														## 创建文件
    -bash-4.2# ls -al abc.txt														## 查看文件默认权限
    -rw-r--r-- 1 root root 0 12月  6 15:16 abc.txt			 
    -bash-4.2# chmod u=rwx,g=rx,o=rx abc.txt 						## 赋予新的权限
    -bash-4.2# ls -al abc.txt														## 再次查看
    -rwxr-xr-x 1 root root 0 12月  6 15:16 abc.txt
    
    ## 案例2
    ## 给abc.txt 所有者取消x权限,给所在组w权限
    -bash-4.2# ls -al abc.txt 													## 查看权限
    -rwxr-xr-x 1 root root 0 12月  6 15:16 abc.txt			
    -bash-4.2# chmod u-x abc.txt 												## 给owner撤销x权限
    -bash-4.2# ls -al abc.txt 													
    -rw-r-xr-x 1 root root 0 12月  6 15:16 abc.txt			 ## owner权限为rw
    
    ## 案例3
    ## 给abc.txt 所有用户添加w权限
    -bash-4.2# ls -al abc.txt 													## 查看权限
    -rw-r-xr-x 1 root root 0 12月  6 15:16 abc.txt			 
    -bash-4.2# chmod a+w abc.txt 												## 给所有的用户添加w权限
    -bash-4.2# ls -al abc.txt 
    -rw-rwxrwx 1 root root 0 12月  6 15:16 abc.txt
    
    • 用数字421赋予权限(推荐)
    ## 案例1
    ## 给abc.txt 所有者rwx权限,所在组rx权限,其他组rx权限, r=4,w=2,x=1
    -bash-4.2# chmod 755 abc.txt 
    
    • 修改文件所有者(owner)

      ## 将文件 abc.txt 所有者修改为tom
      -bash-4.2# ls -al abc.txt 
      -rwxr-xr-x 1 root root 0 12月  6 15:27 abc.txt		## 当前所有者为root
      -bash-4.2# chown tom abc.txt 										 ## 所有者修改为tom
      -bash-4.2# ls -al abc.txt 							
      -rwxr-xr-x 1 tom root 0 12月  6 15:27 abc.txt		## 查看已经所有者已经改为了tom
      ## 将目录 /home/test 下所有文件和目录的所有者改为tom
      -bash-4.2# chown -R tom test/										 ## 修改test目录下所有文件和目录own=tom
      -bash-4.2# ls -ald test/*
      -rw-r--r-- 1 tom root    0 12月  6 15:38 test/a.txt
      -rw-r--r-- 1 tom root    0 12月  6 15:38 test/b.txt
      drwxr-xr-x 2 tom root 4096 12月  6 15:39 test/c
      -rw-r--r-- 1 tom root    0 12月  6 15:39 test/c.txt
      
      
    • 修改文件所在组(group)

      ## 将文件 abc.txt 所在组修改为bandit(土匪组)
      -bash-4.2# ls -alh abc.txt 											## 查看abc文件所在组
      -rwxr-xr-x 1 tom root 0 12月  6 15:27 abc.txt	
      -bash-4.2# chgrp bandit abc.txt 								## 修改所在组为bandit
      -bash-4.2# ls -alh abc.txt 											## 查看修改后的组
      -rwxr-xr-x 1 tom bandit 0 12月  6 15:27 abc.txt
      
      ## 将目录 /home/test 下所有文件和目录所在组修改为bandit(土匪组)
      -bash-4.2# ls -alh test													## 查看当前test目录下文件及目录所在组
      总用量 12K
      drwxr-xr-x  3 tom  root 4.0K 12月  6 15:39 .
      drwxr-xr-x. 7 root root 4.0K 12月  6 15:38 ..
      -rw-r--r--  1 tom  root    0 12月  6 15:38 a.txt
      -rw-r--r--  1 tom  root    0 12月  6 15:38 b.txt
      drwxr-xr-x  2 tom  root 4.0K 12月  6 15:39 c
      -rw-r--r--  1 tom  root    0 12月  6 15:39 c.txt
      -bash-4.2# chgrp -R bandit test/								## 将test目录下文件&目录所在组->bandit
      -bash-4.2# ls -alh test													## 查看修改后目录下文件的所在组
      总用量 12K
      drwxr-xr-x  3 tom  bandit 4.0K 12月  6 15:39 .
      drwxr-xr-x. 7 root root   4.0K 12月  6 15:38 ..
      -rw-r--r--  1 tom  bandit    0 12月  6 15:38 a.txt
      -rw-r--r--  1 tom  bandit    0 12月  6 15:38 b.txt
      drwxr-xr-x  2 tom  bandit 4.0K 12月  6 15:39 c
      -rw-r--r--  1 tom  bandit    0 12月  6 15:39 c.txt
      
      

    定时任务(crontab)

    • 安装 yum -y install vixie-cron crontabs
    • cron (command run on 在什么时间执行命令)
    • 进程 crond守护进程
    crontab -e Edit 编辑定时任务
    crontab -l 查询定时任务
    crontab -r remove 删除当前用户所有的定时任务
    service crond restart 重启服务
    • 案例

      ## 案例1 每隔1分钟将当前日期信息,追加到/tmp/mydate.txt文件中
      step1: 编写shell脚本 mytask.sh
      date >> /tmp/mydate.txt
      step2: 编辑crontab -e
      */1 * * * * sh /root/mytask.sh  ## 分 时 日 月 周  *号代表每 /号代表隔  */代表每隔
      
      ## 案例2 每隔1分钟将当前日期日历信息,追加到 /home/mycal.txt 文件中
      将案例1中shell脚本改为
      cal >> /tmp/mycal.txt 
      
      ## 案例3 每天凌晨2点将mysql的testdb数据库备份 mydb.bak
      step1: 编写shell脚本 dbbak.sh
      /usr/local/mysql/bin/mysqldump -uroot -proot testdb > /tmp/mydb.bak
      step2: 给dbbak.sh权限(root可执行)
      chmod 744 dbbak.sh
      step3: crontab -e 注册
      0 2 * * * sh /root/dbbak.sh
      

磁盘分区&挂载

分区基础

  • MBR分区
    1. 最多支持4个主分区
    2. 系统只能安装在主分区且激活
    3. 扩展分区占用1个主分区
    4. MBR分区最大只支持2TB硬盘,但拥有最好的兼容性
  • GTP分区
    1. 支持无限多个主分区
    2. 最大支持18EB容量 1EB=1024PB=1024*1024TB=1024*1024*1024GB
    3. Win64bit 支持GTP

LINUX对分区的处理

  • linux采用了一种挂载的方式处理分区,将一个分区挂载到目录树中的一个目录(分区 对应 一个特定目录),

  • 在linux的世界中,即使分区也只是在文件系统中的一个文件,可以操作文件的方式操作分区

    image-20201206194909780

磁盘占用情况 & 常用文件指令

  • df -lh : 系统整体磁盘占用情况(report file system disk space usage)

  • du -lh [/目录] : 查询指定目录磁盘占用情况, 默认为当前目录

    -s : 指定目录占用大小

    -a : 含文件

    -c : 列出明细同时,增加汇总数

    -h : 带计量单位

    --max-depth=1 : 子目录深度

    ## 例1 统计/opt目录下占用空间情况,包含文件,深度为1
    du -ach --max-depth=1 /opt
    
    ## 例2 统计/home文件夹下文件个数
    ls -al /home | grep "^-" | wc -l
    
    ## 例3 统计/home文件夹下目录个数
    ls -al /home | grep "^d" | wc -l
    
    ## 例4 统计文件夹下文件个数,递归统计,包含子文件中
    ls -alR /home | grep "^-" | wc -l
    
    ## 例5 统计文件夹下目录个数,递归统计,包含子文件中
    ls -alR /home | grep "^d" | wc -l
    
    ## 例6 以树状显示目录结构
    tree [/目录(默认当前)]
    

硬盘基础

  • linux硬盘分IDE硬盘(并口硬盘)和SCSI硬盘(串口硬盘)

  • IDE硬盘,驱动器标志符为”hdx~“,hd-->hard drive 硬盘驱动器 x->盘号(a为基本盘-第1块盘,b为基本从属盘-第2块盘,c为辅助主盘-第3块盘,d为辅助从属盘-第4块盘), ”~“表示分区,前4个分区用数字1到4表示,它们是主分区或扩展分区,从5开始是逻辑分区

    e.g hda3表示第一个IDE硬盘上的第三个主分区,hdb2表示第二个IDE2硬盘上的第二个主分区(扩展分区也是朱分区)

  • SCSI硬盘,标志为"sdx~", "sd"表示SCS硬盘,其余一致

  • 查看

image-20201206200157503
  • 查看分区大小 和 挂载点
  • image-20201206200351627

挂载一块硬盘

  • 步骤
    1. 添加SCSI硬盘 添加完成后lsblk -f --》 命令完成后可以查看到一块sdb硬盘
    2. 硬盘分区 分区命令fdisk /dev/sdb --》 完成1个主分区
    3. 格式化分区 mkfs -t ext4 /dev/sdb1 --》 将sdb1分区格式化为ext4格式
    4. 创建挂载点(目录 e.g /home/newdisk)
    5. 挂载, --》 mount /dev/sdb1 /home/newdisk 设备重启后该分区不会自动挂载
    6. 设置自动挂载
      1. vim /etc/fstab
      2. image-20201206203825507
      3. mount -a (mount auto 自动挂载生效)
      4. reboot (重启后检查)

卸载一块硬盘

  • umount 设备名/挂载点
  • e.g umount /dev/sdb1 或者 umount /home/newdist 可以达到一样的效果

网路配置

  • 将ip配置为静态的

    1. vim /etc/sysconfig/network-scripts/ifcfg-eth0 
    2. 按下图配置
    3. 重启reboot 或 service network restart
    
    image-20201206231552339
posted @ 2020-12-16 21:29  ylj-2021  阅读(102)  评论(0编辑  收藏  举报