Thezmmm

Never do things by halves.

05 Sep 2022

Linux

Linux

系统目录结构

  • /
    • /bin 存放最常使用的命令
    • /sbin s为super user,存放系统管理员使用的系统管理程序
    • /home 存放普通用户的主目录
      • /alice
      • /bob
      • /eve
    • /root 系统管理员的用户主目录
    • /lib 动态链接共享库
    • /lost+found 系统非法关机后存放一些文件,一般为空
    • /etc 配置文件和子目录
    • /user 应用程序和文件存放目录
      • /local 给主机额外安装软件所安装的目录
    • /boot 启动Linux使用的一些核心文件,包括一些链接文件及镜像文件
    • /proc 系统内存的映射
    • /srv service,服务启动之后需要提取的数据
    • /sys
    • /tmp 存放临时文件
    • /dev 把所有**硬件(device)**用文件的形式存储
    • /media 把识别的设备(如U盘,光驱等)挂载到此目录下
    • /mnt 让用户临时挂载别的文件系统,可以将外部存储挂载在/mnt/上
    • /opt 给主机额外安装软件所摆放的目录
    • /var 存放不断被扩充的内容,包括各种日志文件
    • /selinux security-enhanced linux 安全子系统

系统重要文件

系统网卡配置文件

文件路径

系统网卡文件默认名称 /etc/sysconfig/network-scripts/ifcfg-ens33

系统网卡文件常用名称 /etc/sysconfig/network-scripts/ifcfg-eth0

文件介绍

这是Linux系统第一块网卡的配置文件所在路径,其中第一块网卡配置文件的结尾标识为eth0(ens33),第二块为eth1(ens34),以此类推

执行 nmtui 命令来修改网卡配置时,实际上是在编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 这个文件

文件信息

TYPE=Ethernet
-- 上网类型,目前都是以太网

BOOTPROTO=none
-- 启动协议,获取配置方式,有none|bootp|dhcp三种配置

DEFROUTE=yes
-- 使用默认路由(可以保证主机正常访问互联网)

NAME=eth0
-- 第一块网卡的逻辑别名,第二块为eth1

UUID=xxxxxxxxxxxxxx
-- 通用唯一标识码

ONBOOT=yes
-- 保证下次开机启动时激活网卡设备

IPADDR=10.0.0.0
-- IP地址

PREFIX=24
-- 子网掩码数,这里是24位

GATEWAY=10.0.0.254
-- 网关地址

DNS1=223.5.5.5
DNS2=223.6.6.6
-- 主DNS,默认覆盖以及优先于/etc/resolv.conf的配置生效

文件生效

  1. 重启网络服务,使所有网卡的配置文件生效

    systemctl restart network
    or
    service restart network
    
  2. 只需让单独的ethX网卡配置生效

    #常规用法
    ifdown eth0 && ifup eth0
    ## && 前一条命令操作成功后,操作后一条命令
    
    #扩展用法
    nmcli con down eth0 && nmcli con up eth0
    

域名解析文件

DNS客户端配置文件

path /etc/resolv.conf

负责将网站域名解析为对应的IP地址

nameserver 223.5.5.5
nameserver 223.6.6.6
-- 表明DNS服务器的IP地址
-- 查询时按照nameserver在本文件的顺序进行,且只有当第一个nameserver没有反应时,才查询下面的nameserver

DNS客户端解析文件

path /etc/hosts

此文件设定IP与域名的对应解析表

127.0.0.1 xxx.com

系统主机名称配置文件

path /etc/hostname

此文件为CentOS7系统主机名称的永久配置文件,可以实现主机名称的修改调整

name.linux

需要重新启动,才能使配置生效

变量配置文件

文件路径

# 全局配置文件
/etc/profile
/etc/bashrc

# 局部配置文件
~/.bash_profile
~/.bashrc

文件介绍

系统变量,系统环境变量,以及系统别名功能进行永久配置生效的文件

全局配置文件:对系统中所有用户生效

局部配置文件:对系统中指定用户生效

文件加载的优先顺序

  1. 用户家目录中的.bash_profile
  2. 用户家目录中的.bashrc
  3. /etc/bashrc
  4. /etc/profile

文件生效

  1. 重新连接系统主机

  2. 操作命令

    source /etc/profile
    or
    . /etc/profile
    

设置变量

# 普通变量
name = Linux
变量名 = 变量值

# 环境变量
export NAME = Linux
声明 变量名 = 变量值

注:只有编辑配置文件才会永久生效,以上的操作方法是临时生效

调用变量

# 普通变量
echo $NAME

# 环境变量
env
or
set

系统别名配置

系统中的别名就是将比较复杂或参数信息繁琐的命令,进行简化输入的方式

  • 将危险的命令加一些保护参数,防止误操作
  • 将很多复杂的字符串或命令变为一个简单的字符串或命令

设置系统别名

# 临时配置别名
alias ipinfo01='grep "IPADDR" /etc/sysconfig/network-scripts/ifcfg-eth0'

# 永久配置别名
将上面的信息配置在环境变量配置文件中

# 临时取消别名功能
# 1. 使用绝对路径执行命令
/bin/cp xx xx
# 2. 使用转义符来执行命令
\cp xx xx

# 永久取消别名功能
unalias ipinfo01

信息提示文件

登录终端前的信息提示

path:/etc/issue /etc/issue.net

此文件的作用是显示用户登录真实终端前的提示信息

企业环境中为了防止服务器版本泄露,一般会将其中的内容情况

登录终端后的信息提示

path:/etc/motd

系统内核配置文件

path:/etc/sysctl.conf

设置Linux内核参数,可以用来替代系统默认运行的内核参数,让系统运行得更高效

查看文件内容

sysctl -a

文件生效

sysctl -p

日志文件存放目录

path:/var/log

此目录包含了记录系统及软件服务运行的日志文件,可以知道系统的运行情况以及故障原因

目录信息

  1. /var/log/message

    默认日志文件,系统及服务运行故障时,可以查看这个文件获取故障信息

  2. /var/log/secure

    系统安全的日志文件,会记录“谁,什么时候,从哪,登录系统,是否成功”

  3. /var/log/dmesg

    硬件及系统内核出现问题时,可以查看这个日志文件

系统硬件信息加载与存放目录

path:/proc

目录信息

  1. /proc/cpuinfo

    # 当前CPU信息文件(cat /proc/cpuinfo or lscpu)
    
    physical id :0
    -- cpu个数
    
    cpu cores :1
    -- 一个cpu的核数
    
  2. /proc/meminfo

    # 当前内存信息(cat /proc/meminfo or free)
    
    MemTotal: xxx kB
    -- 系统总内存容量
    
    MemAvailable: xxx kB
    -- 系统可用内存容量
    
  3. /proc/loadavg

    # 当前系统的平均负载情况(cat /proc/loadavg or uptime)
    
    0.00 0.01 0.05 2/114 1680
    -- 前三个数字分别是1,5,15分钟内的平均进程数
    -- 分子是正在运行的进程数,分母是进程总数
    -- 最近运行的进程ID
    

用户登录后执行脚本所在目录

path:/etc/profile.d/

加载系统登录程序的目录,也是用户登录后执行的脚本所在的目录,目录内的程序以文件的形式存在(一般以sh为扩展名)

远程操作

远程登录 - XShell

需要Linux启用SSHD服务,该服务会监听22端口

上传下载 - XFtp

vi和vim编辑器

三种常见模式

  1. 正常模式
    • #vim xxx 使用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作
  2. 插入/编辑模式
    • 使用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作
  3. 命令模式
    • 在普通模式下,先输入冒号:,接着输入命令,就可以通过配置命令对vim进行配置了,如改变颜色主题、显示行号等
  4. 可视化模式
    • 在普通模式下敲击前盘上的 v 键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作
  5. 替换模式
    • 如果我们想修改某个字符,不需要先进入插入模式,删除,然后再输入新的字符,直接在普通模式下,敲击R键就可以直接替换

vim命令

vim键盘命令图

光标移动命令

  1. 单个字符移动

    1. h:左移
    2. l:右移
    3. j:下移
    4. k:上移
    5. xh:左移x个字符
  2. 单词移动

    1. w:光标移动到下个单词的开头
    2. b:光标移动到前一个单词的开头
    3. e:光标移动到下一个单词的末尾
    4. E:移动到单词的结尾
    5. ge:移动到上个单词的词末
    6. 2w:指定移动的次数
  3. 行移动

    1. $:光标移动到当前行的行末
      • :set list 打开末尾行号$
    2. 0:光标移动到当前行的行首
    3. ^:光标移动到当前行的第一个非空字符
    4. 2|:移动到当前行的第2列
    5. fx:光标移动到当前行的第1个字符x上
    6. 3fx:光标移动到当前行的第3个字符x上
    7. tx:光标移动到目标字符x的前一个字符上
    8. fx和tx可以通过 ; 和 , 进行重复移动,一个正向一个反向
    9. %:用于符号间的移动,它会在一对括号间跳跃
  4. 文本块移动:

    1. (: 移到当前句子的开头
    2. ): 移到下一个句子的开头
    3. {: 移到当前一段的开头
    4. }: 移到下一段的开头
    5. [[: 移到当前这一节的开头
    6. ]]: 移到下一节的开头
  5. 在屏幕中移动

    1. xG: 跳转到指定的第x行,G移动到文件按末尾,``(2次单引号)返回到跳转前的位置
    2. gg: 移动到文件开头
    3. x%: 移动到文件中间,就使用50%
    4. H: 移动到home
    5. M: 移动到屏幕中间
    6. L: 移动到一屏末尾
  6. ctrl+G: 查看当前的位置状态

滚屏与跳转

  1. 半屏滚动: ctrl+u/ctrl+d
  2. 全屏滚动: ctrl+f/ctrl+b
  3. 定位光标的位置
  4. zz: 将光标置于屏幕的中间
  5. zt: 将光标移动到屏幕的顶部
  6. zb: 将光标移动到屏幕的底部
  7. 设置跳转标记
  • mx,my,mz设置三个位置
  • x, y,`z跳转到设置

文本插入操作

  1. i: 在当前光标的前面插入字符
  2. a: 在当前光标的后面追加字符
  3. o: 在当前光标的下一行行首插入字符
  4. I: 在一行的开头添加文本
  5. A: 在一行的结尾处添加文本
  6. O: 在光标当前行的上一行插入文本
  7. s: 删除当前光标处的字符并进入到插入模式
  8. S: 删除光标所在处的行,并进入到插入模式
  9. u: 撤销修改

文本删除操作

  1. 字符删除
    1. x: 删除当前光标所在处的字符
    2. X: 删除当前光标左边的字符
  2. 单词删除
    1. dw: 删除一个单词(从光标处到空格)
    2. daw: 无论光标在什么位置,删除光标所在的整个单词(包括空白字符)
    3. diw: 删除整个单词文本,但是保留空格字符不删除
    4. d2w: 删除从当前光标开始处的2个单词
    5. d$: 删除从光标到一行末尾的整个文本
    6. d0: 删除从光标到一行开头的所有单词
    7. dl: 删除当前光标处的字符=x
    8. dh: 删除当前光标左边的字符=X
  3. 行删除
    1. dd: 删除当前光标处的一整行=D
    2. 5dd: 删除从光标开始处的5行代码
    3. dgg: 删除从光标到文本开头
    4. dG: 删除从光标到文本结尾
  4. 行合并
    1. J: 删除一个分行符,将当前行与下一行合并

文本复制、剪切与粘贴

  1. y: 复制,p:粘贴
  2. yw: 复制一个单词
  3. y2w: 复制2个单词
  4. y$: 复制从当前光标到行结尾的所有单词
  5. y0: 复制从当前光标到行首的所有单词
  6. yy: 复制一整行
  7. 2yy: 复制从当前光标所在行开始的2行
  8. p : 粘贴
  • 复制文本块
    1. 首先进入visual模式:v
    2. 移动光标选择文本
    3. 复制与粘贴的操作

文本的修改与替换

  1. cw: 删除从光标处到单词结尾的文本并进入到插入模式
  2. cb: 删除从光标处到单词开头的文本并进入到插入模式
  3. cc: 删除一整行并进入到插入模式
  4. ~: 修改光标下字符的大小写
  5. r: 替换当前光标下的字符
  6. R: 进入到替换模式
  7. xp: 交换光标和下一个字符

文本的查找与替换

  1. /string 正向查找
    • /string\c 查找且忽略大小写
    • :set ic 开启忽略大小写功能
    • :set noic 取消忽略大小写
  2. ?string 反向查找
  3. 设置高亮显示
    • :set hls
    • :set noh 取消高亮
    • *按键将当前光标处的单词高亮显示,使用n浏览下一个查找高亮的结果
  4. :s/old/new 将当前行的第一个字符串old替换为new
  5. :s/old/new/g 将当前行的所有字符串old替换为new
  6. :90s/old/new/g 将指定行的所有字符串old替换为new
  7. :90,93s/old/new/g 将指定范围的行的所有字符串old替换为new
  8. :%s/old/new/g 将文本中所有的字符串old替换为new
  9. :%s/old/new/gc 依次替换每个字符串关键字
  10. :%s/^struct/int/g 将所有以struct开头的字符串替换为int

撤销修改、重做与保存

  1. u: 撤销上一步的操作。
  2. Ctrl+r: 将原来的插销重做一遍
  3. U: 恢复一整行原来的面貌(文件打开时的文本状态)
  4. q: 若文件没有修改,直接退出
  5. q!: 文件已经被修改,放弃修改退出
  6. wq: 文件已经被修改,保存修改并退出
  7. e!: 放弃修改,重新回到文件打开时的状态

编辑多个文件

文件和缓冲区的区别:

文件是保存在磁盘上的,而打开的文件的文件是在内存中,在内存中有一个缓冲区,用来存放打开的文件。vim每次打开文件时都会创建一个缓冲区,vim支持打开多个文件

  1. :buffers 查看缓冲区列表==ls
  2. :buffer N 根据缓冲区列表的编号跳转到指定缓冲区
  3. :bnext/bprev 遍历缓冲区列表
  4. :bfirst/blast 分别调到缓冲区列表的开头和结尾
  5. :write 将缓冲区的修改保存到磁盘上
  6. :edit! e! 放弃缓冲区的修改,恢复到文件打开时的状态
  7. :edit file 编辑另一个文件
  8. :wnext 保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件
  9. :set autowrite

标签页与折叠栏

  1. 标签页的新建:tabedit file/tab split
  2. 标签页的切换: tabn/tabp
  3. 按键:gt/gT
  4. 标签页的关闭:tabclose
  5. 关闭当前的标签页: tabonly
  6. 创建一个折叠:zf200G:将光标和200行之间的代码折叠起来
  7. 折叠的打开与关闭
    1. za: 打开和关闭折叠
    2. zr/zm: 一层一层地打开和关闭折叠
    3. zR/zM: 分别打开和关闭所有的折叠
  8. 折叠键的光标移动
    1. zj: 跳转到下一个折叠处
    2. zk: 跳转到上一个折叠处
  9. 删除折叠
    1. zd: 删除光标下的折叠
    2. zD: 删除光标下的折叠以及嵌套的折叠
    3. zE: 删除所有的折叠标签
    4. 创建的折叠当退出vim之后就失效了。

多窗口操作

  1. 分割窗口
    1. split/vsplit filename
  2. 窗口间跳转
    1. ctrl+w hjkl
    2. ctrl+w w
  3. 移动窗口
    1. ctrl+w HJKL
  4. 调整窗口尺寸
    1. ctrl+w +/- 调整窗口的高度
    2. ctrl+w </> 调整窗口的宽度
    3. ctrl+w = 所有的窗口设置相同的尺寸
    4. :resize n将当前窗口尺寸调整为N行
  5. 关闭窗口
    1. close: 关闭一个窗口
    2. qall: 退出所有窗口
    3. qall!: 放弃修改,退出所有窗口
    4. wqall: 保存并退出所有窗口
    5. wall: 保存所有窗口

关机重启

  1. shutdown
    1. shutdown -h now: 立即关机
    2. shutdown -h 1: 一分钟后关机
    3. shutdown -r now: 立即重启
    4. shutdown -c:取消正在执行的shutdown命令
  2. halt:关机
  3. reboot:重启
  4. sync:关机和重启时,先执行sync,将内存的数据写入磁盘

用户管理

家目录

/home/目录下有各个用户对应的家目录,登陆后会自动进入自己的家目录

指令

添加用户

​ useradd [选项] usename

创建用户成功后,会自动创建和用户同名的家目录,也可以通过useradd -d 指定目录 username指定家目录

指定密码

​ passwd username // 给username修改密码

删除用户

​ userdel username // 删除用户但保留家目录

userdel -r username // 删除用户及家目录,一般不删家目录

查询用户信息

​ id username

切换用户

​ su - username

权限高切到权限低无需密码,反之需要,返回原来用户使用exit指令

查看当前用户

​ whoami/who am i

用户组

系统可以对有共性的多个用户进行统一管理

增加组

​ groupadd groupname

删除组

​ groupdel groupname

增加用户时指定组

​ useradd -g groupname username

修改用户的组

​ usermod -g groupname username

用户和组的相关文件

/etc/passwd

用户配置文件,记录用户的各种信息

每行的含义:用户名(username):口令(passwd):用户标识号(uid):组标识号(gid):注释性描述:主目录(家目录):登录shell

/etc/shadow

口令配置文件

每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group

组配置文件

每行含义:组名:口令:组标识号(gid):组内用户列表

组管理

查看文件/目录所在组

​ ls -ahl

修改文件所有者

​ chown user file

修改文件所在组

​ chgrp group file

权限

基本介绍

  1. 第0位确定文件类型
  2. 第1-3位确定所有者的权限
  3. 第4-6位确定所属组的权限
  4. 第7-9位确定其他用户的权限

文件的类型

    • 普通文件
  1. d 目录
  2. l 软链接
  3. c 字符设备
  4. d 块文件,硬盘

文件的权限

  1. r 读,可以读取查看文件或目录内容
  2. w 写,可以修改文件(不代表可以删除文件),目录内可以创建删除重命名目录
  3. x 执行,可以被执行/可以进入该目录

文件的硬链接数或目录的子目录个数

文件所有者

文件所在组

文件的大小

如果是目录,则为4096

最后修改时间

修改权限 - chmod

  1. - =

​ // u所有者,g所有组,o其他人,a所有人 ​ chmod u=rwx,g=rx,o=x 文件/目录名 ​ chmod o+w 文件/目录名 // 增加权限 ​ chmod a-x 文件/目录名 // 删除权限

  1. 通过数字变更权限

​ 规则:r=4,w=2,x=1

​ chmod 751 name ​ 相当于 chmod u=rwx,g=rx,o=x

修改文件所有者

chown newowner file chown newowner:newgroup file -R 如果是目录,则使其下所有子文件或目录递归生效

修改文件所在组

chgrp newgroup file -R 如果是目录,则使其下所有子文件或目录递归生效

命令行快捷键

最常用的快捷键

  1. tab:命令,路径,以及文件信息等的补全

移动光标

  1. ctrl A :光标回到行首
  2. ctrl E :光标回到行尾
  3. ctrl 方向键右 :以字符串为单位向右快速移动光标
  4. ctrl 方向键左 :以字符串为单位向左快速移动光标

剪切、粘贴、清除

  1. ctrl K :剪切(删除)光标处到行尾的字符
  2. ctrl U :剪切(删除)光标处到行首的字符
  3. ctrl W:剪切(删除)光标前的一个单词
  4. ctrl Y:粘贴剪切删除的文本

系统管理控制

  1. ctrl C :中断终端正在执行的任务 或者 取消整行命令的输入
  2. ctrl L :清除屏幕上的所有内容,相当于clear
  3. ctrl D :退出当前shell命令行
  4. ctrl Z :暂停执行在终端运行的任务
  5. ctrl S :锁定终端,使之无法输入内容
  6. ctrl Q :解锁ctrl s的锁定

重复执行命令

  1. ctrl R :搜索命令行使用过的命令
  2. Esc . :获取上一条命令的最后部分(空格分隔)

命令

命令语法格式:

  • 中括号[]表示可选
  • 参数选项表示使用一个命令的具体功能
  • 命令,参数选项和文件路径之间至少要有一个空格
命令 [参数选项] [文件或路径]
// rm -f /tmp/test.txt

Linux运行级别

  1. 0:关机
  2. 1:单用户(找回密码)
  3. 2:多用户无网络服务
  4. 3:多用户有网络服务
  5. 4:保留
  6. 5:图形界面
  7. 6:重启

系统运行级别的配置文件/etc/inittab

命令:init [0123456] 切换到指令运行级别

找回root密码

进入单用户模式,修改root密码,因为进入单用户模式,root无需密码即可登录

帮助指令

  1. man

​ man [命令或配置文件]

  1. help

​ help 命令

  1. history

    查看已经执行的历史命令,也可以执行历史命令

    history //查看所有执行过的指令 ! num //执行history中编号为num的指令

文件目录指令

  1. pwd

​ print working directory 显示当前工作目录的绝对路径

  1. ls

    查看目录的内容信息

    1. -a:显示当前目录所有文件和目录(包括隐藏的)
    2. -l:以列表的方式显示信息
    3. -h:查看所有者
ls [选项] [目录/文件]
  1. cd

    切换目录 cd [参数]

    1. cd ..:回到当前目录的上一级目录
    2. cd ~ 或者 cd :回到自己的家目录
  2. mkdir

    创建目录

    mkdir [选项] 目录名
    
    // 创建多个有规则的目录
    mkdir test{1..3}
    // mkdir test1 test2 test3
    

​ -p :创建多级目录

  1. rmdir

    删除空目录

    1. -r 递归删除 (删除目录时必带参数,默认rm只能删除文件)
    2. -f 强制删除,不需要确认

    rmdir [选项] 要删除的目录

  2. touch

    创建空文件

    touch 文件名

  3. cp

    拷贝文件到指定目录

    1. -r 递归复制整个文件夹
    2. -p 复制时保存源文件的所有者,权限,以及时间等信息

    cp [选项] source dest

  4. rm

    移除文件或目录

    1. -r:递归删除整个文件夹
    2. -f:强制删除

    rm [选项] 要删除的文件或目录

  5. mv

    移动文件和目录或者重命名

    1. -f : 若目标文件已存在,则不询问直接覆盖
    2. -n:不覆盖已经存在的文件(安全)
    3. -t :指定mv的目标目录,移动多个文件到一个目录
    mv oldName newName	//重命名
    mv file path		//移动文件(优先级高于重命名)
    mv -t path file1 file2 //移动多个文件
    

查看文件内容

  1. cat

    查看文件内容

    cat [选项] 要查看的文件
    
    1. -n: 显示行号
    2. -b: 显示行号,但忽略空行
    3. -s :连续两行以上的空行,替换为一行空白行
    4. -E :在每一行的行尾显示$符号
  2. more

    基于vi编辑器的文本过滤器,以全屏幕的方式按页显示文本文件的内容

    内置快捷键

    1. space:向下翻一页
    2. Enter:向下翻一行
    3. q:退出more
    4. b:返回上一屏
    5. v:调用vi编辑器
  3. less

    用来分屏查看文件的内容,显示文件内容时并不一次将整个文件加载,而是根据显示需要加载内容

    内置快捷键

    1. space:向下翻一页
    2. [pagedown]:向下翻一页
    3. [pageup]:向上翻一页
    4. q:退出
  4. >和»

​ > 输出重定向,» 追加

ls -l >filename	// 将ls -l这个指令显示的内容,覆盖到文件中
ls -l >>filename	//将指令显示的内容,追加到文件末尾
  1. echo

    输出内容到控制台

    1. -n: 不要自动换行
echo [选项] [输出内容]
  1. head

​ 用于显示文件的开头部分内容

head file 查看文件前10行内容
head -n 5 file 查看文件前5行内容
  1. tail

​ 输出文件中尾部的内容

tail file 查看文件后10行内容
tail -n 5 file 查看文件后5行内容
tail -f file 实时追踪文档的所有更新
  1. ln

​ 软连接,相当于快捷方式

ln -s [原文件或目录] [软链接名]	// 创建软链接
rm -rf 软链接名 				// 删除软链接

时间日期类

  1. 显示时间

​ date 显示当前时间 ​ date +%Y 显示年份 ​ date +%m 显示月份 ​ date +%d 显示天 ​ date “+%Y-%m-%d %H:%M:%S” 显示2022-4-9 20:05:00

  1. 设置日期

​ date -s 字符串时间

  1. cal

​ 查看日历

cal [选项]

搜索查找

  1. find

    find指令将从指定目录向下递归的遍历各个目录,将满足条件的文件或目录显示在终端

    1. -name<查询方式> 按照指定的文件名查找文件
    2. -user<用户名> 查找属于指定用户名的所有文件
    3. -size<文件大小> 根据文件大小查找文件

    find [搜索范围] [选项]

  2. locate

    快速定位文件路径,利用事先建立的系统中所有文件名以及路径的locate数据库实现快速定位给定的文件

​ updatedb //创建locate数据库 ​ locate file //搜索文件

  1. grep

    过滤查找,可用于文件信息处理,可以使用正则表达式

    grep [选项] [pattern] [file]
    
    1. -n 显示匹配的行及行号
    2. -i 忽略字母大小写,默认区分大小写
    3. -v 排除pattern对应的信息
    4. -w 以单词为单位进行过滤

压缩和解压

  1. gzip和gunzip

​ gzip file 压缩文件为*.gz文件 ​ gunzip *.gz 解压文件

  1. zip

​ zip [选项] name.zip 压缩文件 ​ -r 递归压缩,即压缩目录

  1. unzip

​ unzip [选项] name.zip 解压文件 ​ -d<目录>,指定解压后文件的存放目录

  1. tar

    打包指令,最后打包的文件时.tar.gz文件

    tar [选项] name.tar.gz 打包的内容

    1. -c 产生.tar打包文件
    2. -v 显示详细信息
    3. -f 指定压缩后的文件名
    4. -z 打包同时压缩
    5. -x 解包.tar文件

任务调度

指系统在某个时间执行的特定命令或程序

任务分类

  1. 系统工作:有些工作需要周而复始的进行,如病毒扫描
  2. 个别用户工作:个别用户可能希望按时执行某些程序,如数据库备份

命令

crontab [选项]

  1. -e 编辑crontab定时任务
  2. -l 查询crontab任务
  3. -r 删除当前用户所有的crontab任务

参数说明

*/1**** ls -l /etc » /tmp/test.txt

设置每分钟执行一次,遍历目录并将详细信息写入/tmp/test.txt中

五个*占位符的含义

  1. 先编写一个文件 /home/mytask.sh:date»/tmp/mydate
  2. 给mytask.sh一个可执行权限(chmod 744 /home/mytask.sh)
  3. crontab -e
  4. */1**** /home/mytask.sh

磁盘分区

分区

  1. mbr分区
    1. 最多支持四个主分区
    2. 系统只能按照在主分区
    3. 扩展分区要占一个主分区
    4. MBR最大支持2TB,但兼容性良好
  2. gtp分区
    1. 支持无限多个主分区(但操作系统可能限制,windows下最多128个分区)
    2. 最大支持18EB容量(EB = 1024PB,PB=1024TB)
    3. windows7 64位以后支持gtp

Linux分区原理

  1. Linux无论几个分区,分给哪一目录使用,总之它只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分
  2. Linux采用一种叫"载入"的处理方法,它的整个文件系统包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得 ###硬盘说明
  3. Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
  4. 对于IDE硬盘,驱动器标识符为"hdx~",其中"hd"表示分区所在设备类型,“x"表示盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),"~“代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区
  5. 对于SCSI硬盘则标识为"sdx~",SCSI硬盘用"sd"来表示分区所在设备的类型的,其余同IDE硬盘

查看分区和挂载指令

lsblk -f

添加一块新硬盘

  1. 虚拟机添加硬盘
  2. 分区 分区命令: fdisk /dev/sdb 开始对/sdb分区:
    • m 显示命令列表
    • p 显示磁盘分区,同fdisk -l
    • n 新增分区
    • d 删除分区
    • w 写入并退出
  3. 格式化 mkfs -t ext4 /dev/sdb1
  4. 临时挂载(重启后挂载取消)
    1. 挂载:mount 设备名称 挂载目录
    2. 卸载:umount 设备名称或挂载目录
  5. 设置自动挂载(永久挂载) vim /etc/fsta /dev/sdb1 /home/newdisk ext4 defaults 0 0 mount -a 使修改生效

磁盘情况查询

查询系统整体磁盘使用情况

df -h

查询指定目录的磁盘占用情况

du -h /目录 //默认为当前目录

  1. -s 指定目录占用大小汇总
  2. -h 带计量单位
  3. -a 含文件
  4. –max-depth=1 子目录深度
  5. -c 列出明细的同时,增加汇总值

目录统计

  1. 统计/home文件夹下文件的个数

ls -l /home | grep “^-” | wc -l

  1. 统计/home文件夹下目录的个数

ls -l /home | grep “^d” | wc -l

  1. 统计/home文件夹及其子文件夹下的文件个数

ls -lR /home | grep “^-” | wc -l

  1. 以树状显示目录结构

tree [option] [目录]

  • -a: 显示所有文件,包括隐藏文件
  • -d: 只显示目录结构中的目录
  • -L:遍历目录的最大层数,level为大于0的正整数

网络配置

测试连通性

​ ping 目的主机

网络环境配置

1. 自动获取

2. 指定固定ip

直接修改配置文件来指定IP,并可以连接到外网

vi /etc/sysconfig/network-scripts/ifcfg-eth0
//ONBOOT=yes
//BOOTPROTO=static 以静态方式获取ip
//IPADDR 指定ip地址
//GATEWAY 网关
//DNS dns和网关保持一致即可

//重启网络服务
service network restart 或者 reboot

进程管理

显示系统执行的进程

​ ps -aux ​ ps -aux | grep xxx ​ ps -ef

  1. -a:显示当前终端所有进程信息
  2. -u:以用户的格式显示进程信息
  3. -x:显示后台进程运行的参数
  4. -e:显示所有进程
  5. -f:全格式

字段

  1. USER:用户
  2. PID:进程id
    • PPID:副进程
  3. %CPU:占用cpu情况
  4. %MEM:占用内存情况
  5. VSZ:占用虚拟内存情况
  6. RSS:占用物理内存情况
  7. TTY:使用的终端
  8. STAT:进程运行的状态(s休眠,r运行)
  9. START:启动时间
  10. TIME:占用CPU的总时间
  11. COMMAND:进程执行时的命令行

终止进程

kill [选项] 进程号 //通过进程号杀死进程 killall 进程名称 //通过进程名称杀死进程,支持通配符

-9:强迫进程立即停止

查看进程树

​ pstree [选项]

  1. -p:显示进程的pid
  2. -u:显示所属用户

服务管理

服务本质就是进程,但是运行在后台,通常都会监听某个端口,等待其他程序的请求,如mysql,sshd,iptables(防火墙)等,因此又称为守护进程

service管理指令

service 服务名 [start | stop | restart | reload | status]

查看服务名

  1. setup -> 服务名称
  2. ls -l /etc/init.d/

服务的运行级别

vi /etc/inittab //查看或者修改默认级别

chkconfig指令

通过chkconfig命令可以给各个运行级别的每个服务设置自启动/关闭

chkconfig –list | grep xxx chkconfig 服务名 –list chkconfig –level 5 服务名 on/off

动态监控进程

top与ps命令相似,但top在执行一段时间后可以更新正在运行的进程

top [选项] k //输入pid杀死进程 u //查看某个用户的进程 P //按照CPU使用率排序(默认) M //按照内存的使用率排序 N //以PID排序 q //退出top

  1. -d:秒数,指定top命令每隔几秒更新,默认为3
  2. -i:使top不显示任何闲置或僵死进程
  3. -p:通过指定监控进程id来仅仅监控某个进程的状态

监控网络状态

netstat [选项]

  1. -an:按一定顺序排列输出
  2. -p:显示哪个进程在调用

软件包管理

RPM包

一种用于互联网下载包的打包及安装工具,生成具有.RPM扩展名的文件,RPM使RedHat Package Manager的缩写,相当于windows的setup.exe

RPM包的查询指令

​ rpm -qa //查询已安装的所有rpm软件包 ​ rpm -q 软件包名 //查询软件包是否安装 ​ rpm -qi 软件包名 //查询软件包信息 ​ rpm -ql 软件包名 //查询软件包中的文件 ​ ron -qf 文件全路径名 //查询文件所属的软件包

rpm包名的基本格式

​ firefox-45.0.1-1.el6.centos.x86_64.rpm

  1. 名称:firefox
  2. 版本:45.0.1-1
  3. 适用操作系统:el6.centos.x86_64

卸载rpm包

rpm -e rpm包名 //如果其他包依赖于要卸载的包,则报错 rpm -e –nodeps rpm包名 //强制删除

安装rpm包

rpm -ivh rpm包全路径名称

  1. i:install
  2. v:verbose 提示
  3. h:hash 进度条

yum

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

基本指令

yum list | grep xx	//查询yum服务器是否有需要安装的软件
yum install xxx		//安装指定yum包

软件安装查看

rpm -qa httpd
-- 查看指定软件程序是否已经成功安装

rpm -ql httpd
-- 查看指定软件安装的所有数据信息

rpm -qc httpd
-- 查看指定软件安装后的配置文件

which httpd
-- 查看命令的绝对路径

rpm -qf `which httpd`
-- 查看指定操作命令或文件数据属于哪个安装包

注:利用rpm命令只能查看rpm和yum方式安装的程序

JAVAEE开发

安装JDK

  1. 将软件通过 xftp 上传到/opt
  2. 解压缩到 /opt
  3. 配置环境变量的配置文件 vim /etc/profile
    • JAVA_HOME = /opt/jdk1.7
    • PATH = /opt/jdk1.7/bin:$PATH
    • export JAVA_HOME PATH
  4. 注销用户后生效

tomcat安装

  1. 解压缩到 /opt
  2. 进入tomcat的bin目录,启动tomcat ./startup.sh
  3. 开放端口8080 使外网可以访问tomcat
    • vim /etc/sysconfig/iptables
    • -A INPUT -m state NEW -m tcp -p tcp –dport 8080 -j ACCEPT
  4. 重启防火墙

Eclipse安装

  1. 解压缩到 /opt
  2. 启动eclipse 配置jre和server
  3. 编写测试程序

mysql的安装

  1. 卸载旧版本
    • rpm -qa | grep mysql 检查是否安装有mysql
    • rpm -e mysql
  2. 安装编译代码需要的包
    • yum -y install make gcc-c++ cmake bison-devel ncurses-devel
  3. 下载并解压mysql
  4. 进入MySQL
    • cd mysql
  5. 编译安装
    • cmake -DCMAKE_INSTALL_PREFIX=/user/local/mysql
    • -DMYSQL_DATADIR=/user/local/mysql/data -DSYSCONFDIR=/etc
    • -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
    • -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1
    • -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306
    • -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1
    • -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8
    • -DDEFAULT_COLLATION=utf8_general_ci
    • mark && make install
  6. 配置mysql
    1. 设置权限
      • cat /etc/passwd 查看用户列表
      • cat /etc/group 查看用户组列表
      • 如果没有就创建
        • groupadd mysql
        • useradd -g mysql mysql
      • 修改/user/local/mysql权限
        • chown -R mysql:mysql /user/local/mysql
  7. 初始化配置
    • 进入安装路径 cd /user/local/mysql/
    • scripts/mysql_install_db –basedir=/usr/local/mysql –datadir=/user/local/mysql/data –user=mysql
  8. 启动mysql
    • 进入 /user/local/mysql
    • cp support -files/mysql.server /etc/init.d/mysql
    • chkconfig mysql on
    • service mysql start
    • 修改root密码
      • cd /user/local/mysql/bin
      • ./mysql -uroot
      • SET PASSWORD = PASSWORD(‘root’);