Linux 系统
# Linux目录结构

| 目录 | 含义 |
|---|---|
| /bin | 存放二进制可执行文件 |
| /boot | 存放系统引导时使用的各种文件 |
| /dev | 存放设备文件 |
| /etc | 存放系统配置文件, 比如:安装完毕jdk,安装maven、配置环境变量profile文件 |
| /home | 用户的主目录,存放用户的个人资料的。比如:linux是一个多用户的操作系统,创建了zhangsan用户,那么在home目录里面有zhangsan文件夹。 |
| /lib | 存放程序运行所需的共享库和内核模块 |
| /opt | 额外安装的可选应用程序包所放置的位置 |
| /root | 超级管理员的主目录 |
| /sbin | 存放二进制可执行文件,只有root用户才能访问 |
| /tmp | 存放临时文件 |
| /usr | 以后我们安装软件都存储在该目录中 unix share resource |
| /var | 存放运行时需要改变数据的文件,例如日志文件 |
# 常用命令
| 命令 | 作用 |
|---|---|
| ls [目录名] | 查看当前目录下的内容 |
| pwd | 查看当前所在目录 |
| cd [目录名] | 切换目录 |
| touch [文件名] | 如果文件不存在,创建文件 |
| mkdir [目录名] | 创建目录 |
| rm [文件名] | 删除指定文件 |
| clear | 清空控制台 |
| source [文件名] | 加载配置文件 |
| netstat -ntlp | 查看网络进程状态 |
命令格式
command [-options] [parameter]
说明:
command: 命令名
[-options]: 选项,可用来对命令进行控制,也可以省略
[parameter]: 传给命令的参数,可以是零个、一个或者多个
注意:
[] 代表可选
命令名、选项、参数之间有空格进行分隔
2
3
4
5
6
7
8
9
10
# 文件目录查看
# ls
● ls 查看当前目录下的内容(文件及目录)
● ls / 查看指定目录(/)下的内容
● ls -a 查看所有内容,包含隐藏的内容
● ls -al 列表方式查看
● ll -a 列表方式查看,简洁方式
2
3
4
5
推荐使用
ll -a来查看,信息更详细 作用: 显示指定目录下的所有内容 语法: ls [-al] [dir] 说明: -a 显示所有文件及目录 (. 开头的隐藏文件也会列出) -l 除文件名称外,同时将文件型态(d表示目录,-表示文件)、权限、拥有者、文件大小等信息详细列出注意: 由于我们使用ls命令时经常需要加入-l选项,所以Linux为ls -l命令提供了一种简写方式,即ll
常见用法: ls -al 查看当前目录的所有文件及目录详细信息 ls -al /etc 查看/etc目录下所有文件及目录详细信息 ll 查看当前目录文件及目录的详细信息
# cd
● cd / 切换到根目录
● cd /root 切换到/root目录
● cd .. 切换到上一层目录
● cd ../../ 切换到上二层目录
● cd - 切换到上一次所在的目录
● cd 回车 切换到当前用户的主目录
2
3
4
5
6
作用: 用于切换当前工作目录,即进入指定目录 语法: cd [dirName]
特殊说明: ~ 表示用户的主目录,超级管理员的用户的主目录root . 表示目前所在的目录 .. 表示目前目录位置的上级目录
举例: cd .. 切换到当前目录的上级目录 cd ~ 切换到用户的home目录 cd /usr/local 切换到/usr/local目录
备注: root用户 /root 其他用户 /home/xxx
# touch
● touch 1.txt 创建文件1.txt
● touch 2.txt 3.txt 4.txt 一次性创建文件2.txt,3.txt,3.txt
2
语法:touch 起始目录 [查找类型] "目标" [查找类型] -name 通过名字查找 通配符* a 以a结尾的 a 以a开头的 a 包含a的 -size 通过大小查找 +|-n[kMG] +、-:表示大于或小于 n表示大小数字 kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
# mkdir
● mkdir 01 创建文件夹01
● mkdir aa bb cc 一次性创建多个目录
● mkdir -p dd/ff 如果父目录dd不存在就先创建父目录dd,之后创建子目录ff
2
3
一般使用
mkdir -p即可
# rm
● rm 4.txt 删除文件 (删除文件时,需要确认,输入y, 代表确定)
● rm -f 4.txt 强制删除,不会问是否删除
● rm 目录名 默认忽略这个命令,不会删除
● rm -rf 目录名 recusion是r的缩写,代表递归,这样就可以递归删除当前目录下子文件和子目录
● rm -rf /* 删除磁盘上所有资源,千万注意不要使用,否则需要重装系统
2
3
4
5
一般使用rm时都会带上
-rf选项,但是注意路径千万不能写/*
**【乱码】**若在执行Linux命令时,提示信息如果显示为乱码。这是由于编码问题导致,只需要修改Linux的编码即可,命令如下:
echo 'LANG="en_US.UTF-8"' >> /etc/profile
source /etc/profile
2
# cat
作用: 用于显示文件内容
语法: cat [-n] fileName
说明:
-n: 由1开始对所有输出的行数编号
举例:
cat /etc/profile 查看/etc目录下的profile文件内容
2
3
4
5
6
7
8
文件内容少时使用该命令
# less
作用: 以分页的形式显示文件内容
语法: more fileName
操作说明:
回车键 向下滚动一行
空格键 向下滚动一屏
b 返回上一屏
q或者Ctrl+C 退出more
举例:
more /etc/profile 以分页方式显示/etc目录下的profile文件内容
2
3
4
5
6
7
8
9
10
11
Less命令用法与more非常类似,只不过比more多了可以使用上下方向键。 还可以是使用PgUp查看上一页,PgDn查看下一页
less -mN 文件名
-m 显示查看内容的百分比
-N 显示行号
# tail
作用: 查看文件末尾的内容
语法: tail [-f] fileName
说明:
-f : 动态读取文件末尾内容并显示,通常用于日志文件的内容输出
举例:
tail /etc/profile 显示/etc目录下的profile文件末尾10行的内容
tail -20 /etc/profile 显示/etc目录下的profile文件末尾20行的内容
tail -f /itcast/my.log 动态读取/itcast目录下的my.log文件末尾内容并显示
2
3
4
5
6
7
8
9
10
文件内容大时使用该命令,以及用于日志文件的内容输出
# find
作用: 在指定目录下查找文件
语法: find dirName -option fileName
举例:
find . –name "*.java" 在当前目录及其子目录下查找.java结尾文件
find /itcast -name "*.java" 在/itcast目录及其子目录下查找.java结尾的文件
2
3
4
5
# grep
作用: 从指定文件中查找指定的文本内容,并且返回查找到的对应行数据
语法: grep word fileName
举例:
grep Hello HelloWorld.java 查找HelloWorld.java文件中出现的Hello字符串的位置
grep hello *.java 查找当前目录中所有.java结尾的文件中包含hello字符串的位置
grep -n hello Itheima.java -n显示行号
grep -ni hello Itheima.java -i 忽略大小写匹配内容
2
3
4
5
6
7
8
# wc
作用:可以统计文件的行数、单词数量等
语法:wc [-c -m -l -w] 文件路径
-c:统计bytes数量
-m:统计字符数量
-l:统计行数
-w:统计单词数量
2
3
4
5
6
# rpm
rpm -qa 查询当前系统中安装的所有软件
rpm -qa | grep mysql 查询当前系统中安装的名称带mysql的软件
2
# 文件拷贝移动
# cp
作用: 用于复制文件或目录
语法: cp [-r] source dest
说明:
-r: 如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件
举例:
cp hello.txt itcast/ 将hello.txt复制到itcast目录中
cp hello.txt ./hi.txt 将hello.txt复制到当前目录,并改名为hi.txt, ./代表当前目录
cp -r itcast/ ./itheima/ 将itcast目录和目录下所有文件复制到itheima目录下
cp -r itcast/* ./itheima/ 将itcast目录下所有文件复制到itheima目录下
2
3
4
5
6
7
8
9
10
11
如果拷贝的内容是目录,需要加上选项
-r
# mv
作用: 剪切,重命名(如果目标位置已存在就是移动剪切,目标位置不存在就是重命名)
语法: mv source dest
举例:
mv hello.txt hi.txt 将hello.txt改名为hi.txt
mv hi.txt itheima/ 将文件hi.txt移动到itheima目录中
mv hi.txt itheima/hello.txt 将hi.txt移动到itheima目录中,并改名为hello.txt
mv itcast/ itheima/ 如果itheima目录不存在,将itcast目录改名为itheima
mv itcast/ itheima/ 如果itheima目录存在,将itcast目录移动到itheima目录中
2
3
4
5
6
7
8
9
mv 命令既能够改名,又可以移动,具体是改名还是移动,系统会根据我们输入的参数进行判定(如果第二个参数dest是一个已存在的目录,将执行移动操作,其他情况都是改名)
# 打包压缩文件
常用windows压缩文件格式: xxx.rar xxx.zip xxx.7z
常用linux压缩文件格式:
- 打包文件: xxx.tar 打包就是将多个资源目录或文件困在一起
- 打包并压缩文件: xxx.tar.gz 打包就是将多个资源目录或文件困在一起,并且会将数据压缩
作用: 对文件进行打包、解包、压缩、解压
语法: tar [-zcxvf] fileName [files]
包文件后缀为.tar表示只是完成了打包,并没有压缩(归档文件)
包文件后缀为.tar.gz表示打包的同时还进行了压缩
说明:
-z: z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
-c: c代表的是create,即创建新的打包文件
-x: x代表的是extract,实现从包文件中还原文件
-v: v代表的是verbose,显示命令的执行过程
-f: f代表的是file,用于指定包文件的名称
举例:
打包
tar -cvf hello.tar ./* 将当前目录下所有文件打包,打包后的文件名为hello.tar
打包并压缩
tar -cvzf hello.tar.gz ./* 将当前目录下所有文件打包并压缩,打包后的文件名为hello.tar.gz
解包
tar -xvf hello.tar 将hello.tar文件进行解包,并将解包后的文件放在当前目录
tar -xvf hello.tar.gz 将hello.tar.gz文件进行解压,并将解压后的文件放在当前目录
tar -xvf hello.tar.gz -C /usr/local 将hello.tar.gz文件进行解压,并将解压后的文件放在/usr/local目录
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
主要使用
tar -cvf打包文件tar -cvzf打包并压缩文件tar -xvf解压文件
# vim编辑器
作用: 对文件内容进行编辑,vim其实就是一个文本编辑器
语法: vim fileName
说明:
1). 在使用vim命令编辑文件时,如果指定的文件存在则直接打开此文件。如果指定的文件不存在则新建文件。
2). vim在进行文本编辑时共分为三种模式,分别是 命令模式(Command mode),插入模式(Insert mode)和底行模式(Last line mode)。这三种模式之间可以相互切换。我们在使用vim时一定要注意我们当前所处的是哪种模式。
三种模式:
- 命令模式(不可编辑内容)
A. 命令模式下可以查看文件内容、搜索文本内容.
按下/输入搜索内容即可.
| 命令模式指令 | 含义 |
| ------------ | --------------------------------- |
| i 或 a 或 o | 进入插入模式,i是光标前面插入,a是光标后面插入,o是在下一行插入 |
| gg | 定位到文本内容的第一行第一个字符 |
| GG | 定位到文本内容的最后一行 |
| yy | 复制当前行 |
| p | 粘贴当前行 |
| dd | 删除光标所在行的数据 |
| ndd | 删除当前光标所在行及之后的n行数据 |
| u | 撤销操作 |
| shift+zz | 保存并退出 |
2
3
4
5
6
7
8
9
10
11
12
13
14
- 插入模式
A. 插入模式下可以对文件内容进行编辑
B. 在命令模式下按下[i,a,o]任意一个,可以进入插入模式。进入插入模式后,下方会出现【insert】字样
C. 在插入模式下按下ESC键,回到命令模式 - 底行模式
- 按下esc回到命令模式
- 在命令模式的基础上按下 shift+:
- 按下保存退出: :wq(保存退出) :q!(强制退出不保存)
| 底行模式命令 | 含义 |
|---|---|
| :wq | 保存并退出 write quit |
| :q! | 不保存强制退出 |
| :set nu | 显示行号 number |
| :set nonu | 取消行号显示 |
| :n | 定位到第n行, 如 :10 就是定位到第10行 |
# 进程管理
ps -ef 系统的所有的进程都展示出来
ps -ef | grep xxx 查询某个进程
jps -l 查询所有的java进程
ps -aux 查询所有进行信息,并显示每个进程cpu耗用,内存耗用
kill -9(强制杀死)|-2(温和杀死) 进程id号
2
3
4
5
# 后台运行
nohup命令:英文全称 no hang up(不挂断),用于不挂断地运行指定命令,退出终端不会影响程序的运行
语法格式: nohup Command [ Arg … ] [&]
参数说明:
Command:要执行的命令
Arg:一些参数,可以指定输出文件
&:让命令在后台执行,终端退出后命令仍旧执行
举例:
nohup java -jar boot工程.jar &> hello.log &
上述指令的含义为: 后台运行 java -jar 命令,并将日志输出到hello.log文件
2
3
4
5
6
7
8
9
10
11
12
13
14
# 端口查看
netstat -ntlp 查看网络进程状态
-n 查看端口
-t 查看tcp协议
-l 正在运行的网络进程
-p 显示进程的名字
2
3
4
5
6
# 防火墙配置
防火墙服务
| 命令 | 作用 |
|---|---|
| systemctl start firewalld | 开启 |
| systemctl stop firewalld | 关闭 |
| systemctl enable firewalld | 开机自启动==(默认状态)== |
| systemctl disable firewalld | 关闭开机自启 |
| systemctl status firewalld | 查看当前防火墙状态 |
centos7上对系统服务的操作
- systemctl start|stop|status|enable|disable|reload 服务名称
- 例如: systemctl start mysqld 开启mysql服务器
端口设置
外网或内网需要连接到当前系统内的程序进行操作,需要linux系统开放程序端口,否则无法访问。
- 开发xxx端口
firewall-cmd --zone=public --add-port=xxx/tcp --permanent- 更新防火墙规则
firewall-cmd --reload- 查看开放端口
firewall-cmd --zone=public --query-port=xxx/tcp
firewall-cmd --zone=public --list-ports- 删除开放端口
firewall-cmd --zone=public --remove-port=xxx/tcp --permanent- 常用端口
8080 tomcat
80 http协议
22 ssh远程连接(默认开启)
3306 mysql
6379 redis
| firewall-cmd | 参数说明 |
|---|---|
| --zone=public | 开放哪个网络,默认是public public: internal: ![]() |
| --add-port=端口/tcp | 添加到防火墙中端口号,对外是打开的 |
| --remove-port=端口/tcp | 从防火墙的规则中删除端口号 |
| --permanent | 永久添加规则 |
| --list-all | 显示现有的规则,展示所有开放端口 |
| --reload | 重新加载规则,让新加的端口号起作用,重启防火墙的服务 systemctl restart firewalld |
# 一些问题
**环境变量不可用的情况:**查看/etc/profile文件,环境变量的路径是否用的是\,应改为/
# 更多
更多Linux相关:Linux.pdf (opens new window)Linux02.pdf (opens new window)
项目部署相关:Linux项目部署.pdf (opens new window)
nohup java -jar translator-forum-1.0-SNAPSHOT.jar >/root/translatorforum/logs/$(date +%Y-%m-%d).log 2>&1&
# 将jar包启动程序的pid写入件中,停止时可直接kill pid
echo $! > /root/translatorforum/logs/pid/pid.tx
2
3
4
PID=$(cat /root/translatorforum/logs/pid/pid.tx)
kill -9 $PID
2
3
internal: 