Linux 操作系统
镜像源
- 更新镜像源
sudo apt-get update
- 安装软件
sudo apt install [-y] <softName>
# 安装 ssh 服务,用来给 linux 客户端软件提供链接服务
sudo apt install openssh-server
切换操作系统启动级别
- 进入 多用户命令模式
sudo systemctl set-default multi-user.target
- 进入 图形化 界面 命令模式
sudo systemctl set-default graphical.target
安装网络工具库
sudo apt install net-tools
# 查看 IP 地址
ifconfig
命令
- pwd 命令 : 查看 命令所在的 磁盘路径
- who 命令: 查看当前是谁
- whereis : 查找 指定名字 所在的 磁盘位置
- history : 查看 历史命令
- man : 查看 指定命令的帮助文档
文件夹 / 目录 常见的 命令
- ls : 查看 文件夹 内容信息
ls -la [<path>] : 查看 指定目录下 的所有 内容
ls -ld [<path>] : 查看 指定目录 的信息 ,而非 里面的内容
ll [<path>] : 是 ls 的一种简写, 该命令不是一个 标准命令。
- mkdir : 创建 文件夹
mkdir abc : 在当前目录下 新建一个 abc 文件夹 , 如果 abc 已经存在,也会报错。
mkdir a b c : 在当前目录下 创建 a 文件夹、 b文件夹 、 c 文件夹
mkdir a/b/c : 在当前目录下 创建 a/b/c 文件夹 , 如果 a 或者 b 目录 不存在,则 无法创建
mkdir -p a/b/c : 在当前目录下, 创建 a/b/c 文件夹, 如果 a 或 b 目录 不存在,则创建 它们。
- rmdir : 删除 空文件夹
rmdir abc : 删除 abc 空文件夹
rmdir -p a/b/c : 等价于 rmdir a/b/c a/b a
文件 常见的命令
- 查看 文件内容
- cat : 查看文件内容 , -n 可以用来显示行号
- nl : 查看文件内容, 会自动显示行号,但空白行 不作为 行号标记。
- tali : 通常配合 -f 参数 可以实时监控 日志。
- touch : 新建文件 、 如果文件已经存在, 则 更新 文件的最后修改时间
touch a.txt : 新建 文件
- rm : 删除 文件 / 文件夹
rm a.txt : 删除 文件 , 如果文件 不存在, 则 报错
rm -i a.txt : 删除 文件 前 进行 友好提示 , 防止 误操作 。
rm -f a.txt : 删除文件 永不提示。
rm -d <dir> : 删除 指定的 空目录 ,等价于 rmdir
rm -r <dir> : 递归删除 目录下的 内容
rm -v a.txt : 删除 文件、并进行 删除内容信息展示
rm -rf / : 删除整个磁盘
-
编辑文件 ( vim 编辑器 )
sudo apt install vim -y
-
命令模式
在该模式下,主要可以通过一些 命令 操作文件,例如 删除行 、复制行等操作
使用 vim 打开 文件 会 自动进入 命令模式 , 在 编辑 模式下, 按下 ESC 会从 编辑模式 进入 到 命令模式
nG : 定位光标到 第 n 行
gg : 定位光标到 第一行
G : 定位光标到 最后 1行
dd : 删除光标所在行的内容
ndd: 从 光标所在行 删除 n 行
d$ : 从 光标所在行的 位置 删除到 行的 尾部。
d0 : 从 光标所在行的 位置 删除到 行的 头部
x : 删除 光标 后的 一个字符 nx : 删除 光标 后的 n 个字符 X : 删除光标 前的 一个 字符 nX : 删除光标前的 n 个 字符
yy : 复制光标所在 行的内容
nyy : 复制 n 行
y$ : 复制光标所在位置到行尾的内容
y0 : 复制光标所在位置到行首的内容
p : 粘贴 内容到 光标所在行的下一行 ,
P : 粘贴内容到 光标所在行的 上一行
/xyz : 从上到下、依次查找 xyz 匹配的内容 。 输入查找内容后,按下 回车键、 按下 n 向下继续查找
?xyx : 方向查找,用法和 /xyz 相同。 按下 N 继续向上查找
-
编辑模式
在该模式下、可以通过键盘 对文件进行编辑修改 。
编辑模式 只能从 命令模式 进入 , 进入的方法可以通过 以下操作
- 按下 i 键 , 在 光标 前 插入 内容 , I (大写i) , 在 光标所在 行的 头部插入 内容
- 按下 a 键 , 在 光标 后插入 内容 , A 在 光标所在行的 尾部插入内容
- 按下 o 键 , 在光标所在行的下方 新建一空白行,插入内容。 O 在光标所在行的 上方 新建 一 空白行, 插入内容。
-
命令底线模式
在该模式下、主要可以完成 对 文件的保存、取消等操作。
命令底线模式 必须在 命令模式 下 , 输入
:
进入 命令底线模式 。w : 保存
q : 退出
wq : 保存并退出 w! , q! , wq! : 强制
%s/old/new/pattern : 全部内容替换 语法 % 替换范围为整个文档 , : 替换光标所在行 , s 替换 , old 替换前的内容,支持正则表达式 , new 替换成的内容 , pattern 替换模式, 比较常用的 模式 是 g(全部), c (是否询问)
%s/k/Q/g : 将整个文档中的 k 字符串 替换成 Q
%s/k/Q/ : 将整个文档中的 每一行的 第一个 k 替换成 Q
😒/k/Q/ : 替换 光标所在行 中的 第一个 k 为 Q
😒/k/Q/g : 替换 光标所在行 中 所有 k 为 Q
:m,ns/k/Q/g : 替换 从 m ~ n 行中 所有 k 为 Q , m 和 n 代表 行数, m < n, 如果 要 替换到文档尾部,则 n 可以使用 $ 表示
-
set nu : 显示 行号 , set nonu : 隐藏行号
文件/目录 复制
- 拷贝 文件 到 指定的 文件中
cp a.txt b.txt : 如果 b.txt 不存在, 则创建, 否则 覆盖。
-
拷贝 文件 到 指定的 目录 中
cp a.txt test : test 目录 必须存在 ,如果不存在 , test 会作为 文件 的方式 被 创建出来。
-
拷贝 目录
cp -r 源目录 目标目录 (目录必须存在)
-
拷贝 目录下的内容 到 指定的目录
cp -r 源目录/* 目标目录 (目录必须存在) cp -r 源目录 目标目录 (目录必须不存在)
文件/目录 移动
-
剪切 文件 到 指定的 文件中 (重命名)
mv a.txt b.txt
-
剪切 文件到 指令的目录 中
mv a.txt test (目录必须存在)
-
剪切 目录 到 指定的 目录
mv 源目录 目录目标 (目录存在) mv 源目录 目录目标 (目录不存在, 重命名)
用户 操作
- 添加用户 useradd
- -d : 设置 用户的 根目录
- -m : 创建用户的 根目录
- -g : 设置用户 所属 组名, 默认名 和 当前用户名保持一致
- -p : 设置 密码
- -s : 设置 shell 脚本 , /bin/bash 通用 , /usr/sbin/nologin (禁止登陆)
sudo useradd 用户名 -d /home/用户名 -m -s /bin/bash
sudo passwd 用户名 : 修改密码
su 用户名 : 切换账户
exit : 退出登录
id 用户名 : 查看 用户信息
- 修改用户 usermod : 用法和 useradd 相同
- 删除用户 userdel
sudo userdel -r java
组 Group 操作
- 添加 组 groupadd
sudo groupadd 组名
- 修改组 groupmod
sudo groupmod -n 新组名 原组名
- 删除组 groupdel
sudo groupdel 组名
更改 文件 / 目录 的 拥有者
- 更改 文件 / 目录 的 拥有者
sudo chown 用户名 文件名/目录名 , 如果要更改目录下内容的拥有者, 需要添加 -R 选项
-
更改 文件/目录 的 所属组
sudo chgrp 组名 文件名/目录 , 如果要更改目录下内容的所属组, 需要添加 -R 选项
-
同时 修改 拥有者 和 所属组
sudo chown -R 用户名:组名 文件名/目录
修改 读写可执行 权限
- r (读权限 、 4 )
- w (写权限 、 2)
- x (可执行权限、 1)
一个 文件 或者 目录 拥有的 最大权限 是 rwx 或者 7 , 一个 文件/目录 拥有 三个权限,分别是 主权限 、 组权限 、 其它权限 , 所以 最大权限 表示 为 rwxrwxrwx 或者 数字 777 , 最小权限是 --------- , 对应的数字 是 000
字符授权
u ( 主权限 ) 、 g (组权限) , o (其它权限) , a (所有权限)
sudo chmod u+r a.txt : a.txt 文件 给 主权限 添加 读操作
sudo chmod u-r a.txt : a.txt 文件 给 主权限读操作
数字授权
sudo chmod 777 a.txt : 给 a.txt 设置 最大权限
管道符 |
grep : 过滤 行
cat a.txt | grep d : 显示 a.txt 中 每一行 包含 d 字符的 所有行
cat a.txt | grep -v d : 显示 a.txt 中 每一行 不包含 d 字符的 所有行
ps -ef | grep ssh : 查询 进程名 包含 ssh 的 进程。
sudo lsof -i:22 : 查询 指定的端口号 占用 情况
sudo netstat -nltp| grep 22 查询 指定的端口号 占用 情况
sudo kill -9 进程号 : 杀死指定的进程 。
安装 JDK
-
下载 JDK 安装包
wget https://download.java.net/openjdk/jdk17/ri/openjdk-17+35_linux-x64_bin.tar.gz
-
解压 到 指定位置
tar -zxvf openjdk-17+35_linux-x64_bin.tar.gz -C ~/app
-
创建软连接
ln -s jdk-17 jdk
-
配置 环境变量
sudo vim /etc/profile -- 在 文件 尾部 添加 export JAVA_HOME=/home/huo/app/jdk; export PATH=$PATH:$JAVA_HOME/bin; export CLASSPATH=.;
-
使环境变量生效
source /etc/profile
-
检查 JDK 是否 配置成功
javac -version java -version
安装 tomcat
-
创建一个 tomcat 账户 ,禁止 登录
sudo useradd tomcat -s /usr/sbin/nologin
-
在 安装 tomcat 的 目录中,将 tomcat的 拥有者和组 设置为 tomcat
sudo chown -R tomcat:tomcat tomcat sudo chown -R tomcat:tomcat apache-tomcat-9.0.78/
-
修改 /home/huo/app/tomcat/bin/catalina.sh , 添加 了 JAVA_HOME
JAVA_HOME=/home/huo/app/jdk;
-
配置 开启 自动启动 的配置文件 /var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/tomcat.service
[Unit] Description=tomcat9 After=network.target auditd.service [Service] PIDFile=/home/huo/app/tomcat/temp/tomcat.pid ExecStart=/home/huo/app/tomcat/bin/startup.sh ExecStop=/home/huo/app/tomcat/bin/shutdown.sh Type=forking RuntimeDirectoryMode=0750 User=tomcat Group=tomcat [Install] WantedBy=multi-user.target Alias=tomcat.service
-
添加到 开机 启动的服务中
sudo systemctl enable /var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/tomcat.service
-
启动 tomcat
sudo systemctl start tomcat
-
关闭 tomcat
sudo systemctl stop tomcat
-
查看 tomcat 启动日志
sudo tail -f /home/huo/app/tomcat/logs/catalina.out