linux

Author Avatar
kevin
发表:2021-01-23 17:08:00
修改:2024-10-09 17:08:13

linux

目录结构中常用目录介绍

  • “/bin”: bin是Binary的缩写,这个目录存放着最经常使用的命令
  • "/home": 存放普通用户的主目录,一般该目录名是以用户的账号命名的。
  • "/root": 该目录为系统管理员,也称作超级权限者的用户主目录。
  • "/etc": 所有的系统管理所需要的配置文件和子目录。
  • "/usr": 重要,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
  • "/boot": 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  • "/media": linux会把识别的移动设备挂载到这个目录下。CentOS7在/run/media/root/media
  • "/mnt": 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上
  • "/opt": 这是给主机额外安装软件所摆放的目录。比如你安装JDK、Tomcat则就可以放到这个目录下。
  • "/var": 这个目录中存放着在不断扩充着的东西,经常被修改的目录。包括各种日志文件。

文件编辑

vim是Linux中重要的文本编辑器,我们使用vim可以在Linux中编辑文件,vim可以看做是之前vi编辑器的升级版本

文件编辑过程中的三种模式

一般模式(无法编辑):通过按键控制VIM工作

编辑模式(可以编辑无法保存):可以自由输入

指令模式(可以执行保存、查找等操作):通过执行指令完成一些特殊操作

一般模式

  • yy复制光标所在行
  • p在下方粘贴一行
  • dd删除光标所在行
  • u撤销
  • x向后删除
  • ^移动到行头
  • $移动到行尾
  • 数字+G移动到目标行
  • G移动到页尾
  • gg移动到页头

编辑模式

按键大小写说明光标动作
i小写,常用不动,就在当前位置,开始输入
I大写移动到行的开头,开始输入
a小写光标向后移动一格,然后开始输入
A大写光标移动到行的末尾,然后开始输入
o小写,常用先在光标所在行的下面插入空行 然后把光标移动到空行的开头,再开始输入

esc键退出编辑模式

指令模式

冒号进入指令模式

命令功能
:w保存
:q退出
:!强制退出
:%s/旧字符/新字符批量替换
ZZ 或者 :wq! 最常用保存退出
/ 要查找的词n 查找下一个
:set nu 相当于:set number,如果关闭 :set nonu显示行号

常见的问题

提示存在交换文件

  • 可能原因1:其他窗口正在使用vim打开同一个文件
  • 可能原因2:非正常关机等原因导致vim没有正常退出
  • 可能原因3:使用了ctrl+c异常关闭文件

解决方法

  • 最下面的提示输入Q退出
  • 删除交换文件,重新编辑

屏幕被锁

在Linux环境下Ctrl+s是锁屏

可以使用Ctrl+q解锁,然后继续操作。

如果network无法开启

估计是和NetworkManager冲突,关闭NetworkManager即可

Linux常用命令

帮助文档

man [命令或配置文件] 怎样使用命令等

例如 man ls

--help (提示使用方法)

例如ls --help可以提示ls命令的相关使用方法

清除屏幕

命令: clear

快捷键: ctrl + L

网络配置

  • 显示所有网络接口的配置信息

    • ifconfig
  • 修改IP地址

    • vim /etc/sysconfig/network-scripts/ifcfg-ens33
    • BOOTPROTO=static 这里原本是dhcp自动获取,改为静态
    • 以下是新增内容
      • IPADDR=192.168.6.100 #IP地址
      • GATEWAY=192.168.6.2 #网关
      • DNS1=114.114.114.114 #域名解析器
    • :wq! 保存退出
    • 执行systemctl restart network命令
    • 如果报错,reboot,重启虚拟机
  • 配置主机名

    • 查看当前主机名

      • hostname
    • 修改主机名称

      • vim /etc/hostname 修改完成后保存退出即可
    • 配置主机名找到ip

      • vim /etc/hosts
      • ip地址 显示的主机名称
    • 重启后生效

临时服务管理

基本语法(CentOS 7)

  • 开启服务
    • systemctl start 服务名
  • 关闭服务
    • systemctl stop 服务名
  • 重启服务
    • systemctl restart 服务名
  • 查看服务状态
    • systemctl status 服务名
  • 查看正在运行的服务
    • systemctl --type service
  • 重新加载服务
    • systemctl reload 服务名

防火墙

除了停止服务,还要设置为开机不自动启动

服务名:firewalld

停止防火墙:systemctl stop firewalld

设置开机不自动启动:systemctl disable firewalld

关机重启

命令作用
sync 全称synchronize将内存数据保存到硬盘上
poweroff 电源关闭关机
reboot重启

常用快捷键

按键作用
Ctrl+l清屏
Ctrl+c强制终止程序
tab自动补全
上下键查找执行过的命令

下载文件

wget

-P 参数可以指定目标目录

wget -P /root https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8.tar.gz

文件目录类

ls -l 比较常用,所以别名是ll

[选项]表示可选项

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

    • pwd: 全称 print working directory 打印工作目录
    • pwd /root
  • ls列出目录的内容

    • ls [选项] [目录或是文件]
      • -a
        • 全部的文件,开头为点的隐藏文件一起列出
      • -l
        • 包含文件的属性和权限数据
  • cd 切换目录

    • cd 绝对路径(相对),进入该目录
    • cd.. 回到当前目录的上一级目录
    • cd~ 或者cd 回到自己的家目录
    • cd- 回到上一次所在目录
    • cd -P 跳转到实际物理路径,而非软路径(快捷方式路径)
  • mkdir 创建一个新的目录

    • mkdir [选项] 要创建的目录
      • -p 表示创建多层目录
      • 不加p只能创建单个目录
  • touch 创建空文件

    • touch 文件名称
    • 如果想立刻写内容,直接用vim 文件名即可
  • cp 复制文件或目录

    • cp [选项] 源文件 目标文件
      • -r 递归复制整个文件夹
  • rm 移除文件或目录

    • rm [选项] 要删除的目录

      • -r 递归删除目录中所有内容
      • -f 强制执行删除操作,不用确认
      • -v 显示指令的详细执行过程
    • 递归删除目录中所有内容

      • rm -rf 文件名/
  • mv 移动文件与目录或重命名

    • 重命名
      • mv 旧名 新名
    • 移动文件
      • mv 文件 目的地
  • cat 查看文件内容

    • cat [选项] 要查看的文件
      • -n 查看文件内容并显示行号
  • less 分屏显示文件内容

    • less 要查看的文件
    • 上下键翻页
    • q 离开less程序
  • echo 输出内容到控制台

    • echo [选项] [输出内容]
      • -e 支持转义字符的字符转换
      • 比如输出\n换行等
  • tail 输出文件尾部内容

    • 默认情况下tail指令显示文件的后10行内容
      • -n 行数 行数必须是数字
      • -f 显示文件最新追加的内容
      • 一般用于查看日志文件
  • > 覆盖 和 >> 追加

    • ll >文件 列表的内容写入文件a.txt中(覆盖写
      • 将ls查看信息写入到文件中
      • ls -l>houge.txt 相当于这个
    • ll >>文件 列表的内容追加到文件aa.txt的末尾
      • 将ls查看信息追加到文件中
      • ls -l>>houge.txt

用户管理命令

sudo 设置普通用户具有root权限

修改配置文件

vim /etc/sudoers

91行,在root下面添加一行

 92行 root    ALL=(ALL)    ALL
	  用户名   ALL=(ALL)     ALL

文件权限类

可以使用ll或者ls -l命令来显示一个文件的属性

1637033820754

  • 首位表示类型,如果没有权限,就会出现减号[ - ]

    • - 代表文件
    • d 表示目录
    • l 链接文档(link file)
  • 第1-3位确定主人(文件的所有者),拥有该文件的权限 user

  • 第4-6位确定属于哪个组(同组用户),拥有该文件的权限 group

  • 第7-9位确定其他用户拥有该文件的权限 other

  • r:读(read)

    • 读文件:查看文件内容
      • 例如:cat、less、tail等命令
    • 读目录:查看目录内容
      • 例如:使用ll命令查看目录内容
  • w:写(write)

    • 写文件:向文件中写入新内容
      • 不一定可以删除该文件,所在的目录有写权限,才能删除该文件
    • 写目录:在目录里面增删内容
  • x:执行(execute)

    • 执行文件:把文件当作可执行文件来运行
    • 执行目录:使用cd命令进入目录
  • -:无权限

  • 第一种方式变更权限

    • chmod [{ugoa}{+-=}{rwx}] 文件或目录
    • ugoa,表示要添加权限的字段
    • +号表示添加某个权限,-号去掉某个权限,=号只能是这个权限
    • rwx表示哪个权限
  • 第二种方式变更权限

    • chmod [mode=421] [文件或目录]
  • 经验技巧

    • u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
    • 每个字段都有对应的rwx
    • r=4 w=2 x=1 rwx=4+2+1=7
  • 举例

    • 修改文件使其所属主用户具有执行权限
      • chmod u+x houge.txt
    • 修改文件使其所属组用户具有执行权限
      • chmod g+x houge.txt
    • 修改文件所属主用户执行权限,并使其他用户具有执行权限
      • chmod u-x,o+x houge.txt
    • 采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限。
      • chmod 777 houge.txt
    • 修改整个文件夹里面的都具有可读可写可执行权限。
      • chmod -R 777 xiyou/

搜索查找类

find 查找文件或者目录

find [搜索范围] [选项]

选项功能
-name<查询方式>按照指定的文件名查找模式查找文件
-user<用户名>查找属于指定用户名所有文件
-size<文件大小>按照指定的文件大小查找文件。

举例

  • 按文件名:根据名称查找 /目录 下的filename.txt文件
    • find xiyou/ -name “*.txt”
  • 按拥有者:查找/opt目录下,用户名称为-user的文件
    • find opt/ -user atguigu
  • 按文件大小:在/home目录下查找大于200m的文件(+n 大于 -n小于 n等于)
    • find /home -size +204800
  • 不指定目录
    • find -name "*.txt"

grep

管道筛选,grep配合进行管道筛选

管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理

grep 选项 查找内容 源文件

-n 表示匹配行和行号

查找某文件在第几行

ls | grep -n test

|前面的表示数据源,| grep后面表示筛选条件

which 查找命令

举例,查找命令在那个目录下

which ll

压缩和解压类

tar 打包

tar [选项] XXX.tar.gz 将要打包进去的内容

打包目录,压缩后的文件格式.tar.gz

选项功能
-c产生.tar打包文件
-x解包.tar文件
-z打包同时压缩
-v显示详细信息
-f指定压缩后的文件名
  • 解压到当前目录
    • tar -zxvf houma.tar.gz
  • 解压到指定目录(必须是已经存在的) -C
    • tar -zxvf xiyou.tar.gz -C /opt
  • 压缩用-zcvf

磁盘分区类

fdisk查看分区

fdisk -l (功能描述:查看磁盘分区详情)

该命令必须在root用户下才能使用

Device:分区序列

Blocks:容量

进程线程类

ps:process status 进程状态

ps命令是用于查看进程状态的命令

ps -aux | grep xxx (功能描述:查看系统中所有进程)

ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)查看服务有没有开启

e参数(对应单词entire,表示全部)

f参数(对应单词full-formate,表示完整格式。)

选项功能
-a选择所有进程
-u显示所有用户的所有进程
-x显示没有终端的进程

(1)ps -aux显示信息说明

%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;

%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;

(2)ps -ef显示信息说明-----用的比较多

PID:进程ID

PPID:父进程ID

如果想查看进程的CPU占用率和内存占用率,可以使用aux;

如果想查看进程的父进程ID可以使用ef;

kill 终止进程

kill [选项] 进程号 (功能描述:通过进程号杀死进程)

选项是-9,表示强迫进程立即停止

killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符)

RPM

Linux 系统中命令的参数往往有这样的特点:

  • 参数如果是一个或多个完整的单词那么前面是两个“--”
  • 参数如果是单词的缩写,是一个字母,那么前面是一个“-”

RedHat软件包管理工具,打包安装工具

适合用于装旧版或者指定版本的软件

  • RPM查询命令(rpm -qa)
    • rpm -qa (功能描述:查询所安装的所有rpm软件包)
    • 由于软件包比较多,一般都会采取过滤。rpm -qa | grep 软件包名
    • 查询firefox软件安装情况
      • rpm -qa |grep firefox
  • RPM卸载命令(rpm -e)
    • rpm -e 软件包名
      • 卸载软件包名
      • 有依赖的情况下卸载不了
    • rpm -e --nodeps 软件包名 nodepends
      • 卸载软件时,不检查依赖。
      • 所依赖的软件可能运行不了
  • RPM安装命令(rpm -ivh)
    • rpm -ivh 包全名
选项功能
-i-i=install,安装
-v-v=verbose,显示详细信息
-h-h=hash,进度条
--nodeps少用--nodeps,不检测依赖进度

YUM仓库配置

Shell前端软件包管理器,基于RPM包管理,类似maven

能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系

YUM的常用命令

yum [选项] [参数]

选项可选,-y 表示默认选择yes

参数功能
install安装rpm软件包
update更新rpm软件包
check-update检查是否有可用的更新rpm软件包
remove删除指定的rpm软件包
list显示软件包信息
clean清理yum过期的缓存
deplist 全称dependlist显示yum软件包的所有依赖关系

采用yum方式安装firefox

yum -y install firefox.x86_64

程序的安装

安装jdk

  • 先查询自带的jdk

    • rpm -qa | grep jdk
  • 卸载系统预装的JDK

    • rpm -e –nodeps 第一步查询出来的数据,如果是多个则用空格分隔
  • jdk的压缩包传输到虚拟机的/opt目录下的自定义目录

  • 解压jdk压缩包

    • tar -zxvf jdk-8u152-linux-x64.tar.gz -C /opt
  • 在/etc/profile.d目录下创建my_env.sh文件,设置环境变量

    # 声明 JAVA_HOME 环境变量,等号两边不能有空格
    JAVA_HOME=/opt/jdk1.8.0_152
       
    # 给 PATH 环境变量附加 $JAVA_HOME/bin 部分
    # $PATH 表示引用 PATH 环境变量以前的旧值
    # 使用英文冒号连接
    # $JAVA_HOME 表示对 JAVA_HOME 变量的引用
    # $JAVA_HOME/bin 表示指向可执行文件
    PATH=$JAVA_HOME/bin:$PATH
       
    # 发布
    # 发布是发布变量名,不是引用变量的值,所以前面不写 $ 符号
    export JAVA_HOME PATH
    
    • 执行source /etc/profile.d/my_env.sh使环境变量立即生效
    • echo $JAVA_HOME 有内容输出就说明生效了,否则reboot重庆

安装Tomcat

  • 将tomcat的压缩包上传到/opt目录下的自定义目录

    • tar -zxvf /opt/apache-tomcat-8.5.32.tar.gz -C /opt
  • 进入tomcat的bin目录执行./startup.sh启动tomcat服务器

    • ./表示当前目录的意思

    • 关闭则shutdown.sh

安装MySQL

  • 卸载自带的Mysql-libs(如果之前安装过mysql,要全都卸载掉)
    • rpm -qa | grep mariadb
  • 删除系统中预装的mariadb(如果第一步没查到就不删)
    • rpm -e --nodeps 第一步查询到的结果
  • 按照标号依次安装rpm软件包
    • rpm -ivh xxxxxxxxx等
  • 安装mysql-server时有可能出现以下异常
    • libaio.so.1()(64bit) 被 mysql-community-server-5.7.29-1.el7.x86_64 需要
    • 可以通过yum安装缺少的依赖:yum install -y libaio
  • 初始化MySQL:生成临时密码
    • mysqld --initialize --user=mysql
    • 查看密码cat /var/log/mysqld.log
  • 启动MySQL服务:
    • systemctl start mysqld
  • 临时密码连接MySQL之后修改密码
    • set password=password('新的密码');
  • 编辑/etc/my.cnf配置文件使用utf-8字符集
    • 在[mysqld]后边添加内容,貌似是最后一行
    • character-set-server=utf8
  • 重启MySQL的服务
    • systemctl restart mysqld
  • 如果忘记密码
    • 把服务关闭,删除/var/lib/mysql里的所有内容
    • 重新初始化mysql即可

小结

-r删除全部,复制全部

prm -y确认全部

评论