Linux学习
- 一、Linux问题
- 二、Linux目录
- 三、Linux磁盘管理
- 四、Linux常用命令
- 1、date
- 2、reboot
- 3、wget
- 4、ifconfig
- 5、uname
- 6、cat
- 7、touch(创建文件)
- 8、rm命令(删除文件或目录)
- 9、cp(复制文件或目录)
- 10、mv(移动文件或改名)
- 11、tar(打包压缩或解压)
- 12、find
- 13、echo
- 14、uptime
- 15、free
- 16、who
- 17、last
- 18、history
- 19、more
- 20、head
- 21、tail
- 22、useradd(创建新用户)
- 23、passwd(修改用户密码)
- 24、userdel(删除用户)
- 25、usermod(修改用户)
- 26、groupadd(创建群组)
- 27、grep(对文本进行搜索)
- 28、find(查找文件)
- 29、查看系统版本
- 五、Linux安装JDK
- 六、Linux安装Tomcat
- 七、Linux部署Springboot的web项目
- 八、Vim编辑器
- 九、网卡配置
- 十、管道符、重定向与环境变量
一、Linux问题
1、输入ifconfig,提示:-bash: ifconfig:command not found
**问题:**可能是未安装该命令
**解决:**输入 ls /sbin/ifconfig,如果提示No such file or directory,则确定是未安装ifconfig命令; 可输入yum install ifconfig安装,如果提示有:yum doesn’t have enough cached data to continue,
二、Linux目录
**bin:**存放二进制可执行文件;
**sbin:**存放二进制可执行文件,只有root才能访问;
etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件(如存放防火墙文件、网络设置文件、JDK环境配置文件、mysql配置文件);
usr:应用程序存放目录,
- /usr/bin 存放应用程序,
- /usr/share 存放共享数据;
- /usr/lib 存放不能直接运行的;却是许多程序运行时所必须的一些函数库文件;
- /usr/local 存放软件升级包;
- /usr/share/doc 系统说明文件存放目录;
- /usr/share/man 程序说明文件存放目录;(如存放:jdk,tomcat,mysql,redis,nginx)
**home:**存放用户文件的跟目录;
root:系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下;每一个用户都有家目录,超级管理员root家目录:/root:Linux命令行模式中相当于windows的桌面;
**dev:**用于存放设备文件;lib:存放跟文件系统中的程序运行所需要的共享库及内核模块;
**mnt:**系统管理员安装临时文件系统的安装点;
**boot:**存放用于系统引导时使用的各种文件;
**tmp:**用于存放各种临时文件;
**var:**用于存放运行时需要改变数据的文件;
三、Linux磁盘管理
参数是无序的(如ls -al和ls -la是一样的),特殊情况下除外;
1、ls命令
列出目录内容
参数 | 作用 | 命令 |
---|---|---|
-a或–all | 查询所有文件和目录(包括隐藏文件、特殊目录、.和…) | ls -a ls --all |
-l | 查询详细列表(不包括隐藏文件等),显示文件的详细信息 | ls -l 简写:ll |
-h | 友好展示信息,易读的文件容量(如k,m,g) | 可和-l一起使用(ll -h ) |
-d | 仅看目录本身 |
需求:查看etc目录下的详细列表
命令:ll -h /etc
文件夹目录列表:
(1)文件名以d开头,表示这是一个文件夹;
(2)文件名以-开头,表示这是一个普通文件;
(3)文件名以l开头,表示这是一个链接(超链接、快捷方式);
#查看linuxprobe目录的信息
[root@VM_0_3_centos ~]# ls linuxprobe/
2、cd命令
切换目录
命令 | 功能 |
---|---|
cd …/ | 向上一层目录 |
cd / | 从任意目录切换到跟目录 |
cd /目录名 | 从任意目录切换到指定目录 |
cd ~ | 切换到当前用户家目录。root用户家目录: /root 回家 |
cd - | 切换到上一次访问的目录,只能两个目录相互切换 |
3、pwd命令
pwd : 显示当前工作目录;
参数 | 作用 |
---|---|
-P | 显示真实路径(即非快捷链接的地址) |
4、mkdir命令(创建文件夹)
mkdir 文件夹名称 :创建目录;
参数 | 作用 |
---|---|
-m=MODE | 默认的文件目录权限,如“-m 755” |
-p | 连续创建多层目录(若文件夹已存在则忽略) |
-v | 显示创建的过程 |
如:
mkdir t1/t2 //在当前目录的子目录t1中创建名为t2的文件夹
参数:-p 父目录不存在的情况下先生成父目录;如:
需要在/root/t3目录下创建一个t4目录
位置:/root
条件:t3和t4都不存在
命令:mkdir -p t3/t4
5、rmdir命令
rmdir 文件夹名称 :删除空目录
如:
rmdir t5 //如果t5是空目录,则能成功删除,否则会删除失败
四、Linux常用命令
1、date
格式:date +指定的格式;
如:
date "+%Y-%m-%d %H:%M:%S"
//输出:2019-08-19 09:54:17
date -s "20150901 8:30:00" //设置系统时间为2015年9月1日8点半
date //查看当前系统时间
date "+%Z" //查看本地系统时区
参数 | 作用 |
---|---|
%t | 跳格【TAB键】 |
%H | 小时(00-23) |
%I | 小时(01-12) |
%M | 分钟(00-59) |
%S | 秒(00-60) |
%X | 相当于%H:%M:%S |
%Z | 显示时区 |
%p | 显示本地AM或PM |
%A | 星期几(Sunday-Saturday) |
%a | 星期几(Sun-Sat) |
%B | 完整月份(January-December) |
%b | 缩写月份(Jan-Dec) |
%d | 日(01-31) |
%j | 一年中的第几天(001-366) |
%m | 月份(01-12) |
%Y | 完整的年份 |
2、reboot
重启系统(仅root用户可以使用)
3、wget
用于下载网络文件,格式:wget [参数] [下载地址]
参数 | 作用 |
---|---|
-b | 后台下载模式 |
-O | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
4、ifconfig
用于获取网卡配置与网络状态灯信息,格式:ifconfig [网络设备] [参数]
5、uname
用于查看系统内核版本等信息,格式:uname [-a]
uname -a //查看系统的内核名称、内核发行版、内核版本、节点名、硬件名称、硬件平台、处理器类型、操作系统等信息
6、cat
用于查看纯文本文件,格式:cat [选项] [文件]
参数 | 作用 |
---|---|
-n | 显示行号 |
-b | 显示行号(不包括空行) |
-A | 显示出“不可见”的符号,如空格,tab键等等 |
7、touch(创建文件)
用于创建空白文件与修改文件时间,格式:touch [选项] [文件]
参数 | 命令 |
---|---|
-a | 修改“访问时间”(atime) |
-m | 修改“更改时间”(mtime) |
-d | 同时修改atime与mtime |
-t | 要修改成的时间[YYMMDDhhmm] |
8、rm命令(删除文件或目录)
rm命令用于删除文件或目录
参数 | 作用 |
---|---|
-f | 忽略警告信息 |
-i | 删除前先询问 |
-r | 删除文件夹 |
rm -f test.txt //强制删除文件
rm -rf test //强制删除非空目录
rmdir test //删除空目录
9、cp(复制文件或目录)
cp命令用于复制文件或目录,格式为:“cp [选项] 源文件 目标文件”
复制命令的三种情况:
- 目标文件是一个目录,会将源文件复制到该目录中
- 目标文件是一个文件,会将源文件覆盖该文件
- 目标文件不存在,将会复制源文件并修改问目标文件的名称(重命名)
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制J(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p,d,r为上述的参数) |
10、mv(移动文件或改名)
mv命令用于移动文件或改名
11、tar(打包压缩或解压)
tar命令用于对文件打包压缩或解压,格式为:tar [选项] [文件]
-
打包并压缩文件:"
tar -czvf
压缩包名.tar.gz 文件名" -
解压并展开压缩包:"
tar -xzvf
压缩包名.tar.gz"
参数 | 作用 |
---|---|
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用Gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-P | 保留原始的权限与属性 |
-p | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
#将/etc目录内文件打包并通过gzip格式压缩
[root@VM_0_3_centos ~]# tar cvzf etc.tar.gz /etc
#将etc.tar.gz解压到/root/etc目录中
[root@VM_0_3_centos ~]# tar xvzf etc.tar.gz -C /root/etc
12、find
find命令用于查找文件,格式为:find [查找路径] 寻找条件 操作
find /etc -name "host*" -print //搜索在/etc/中所有以host开头的文件(会搜索/etc的子目录中的文件)
13、echo
echo命令用于在终端显示字符串或变量,格式为:echo [字符串|变量]
#将echo命令的字符串输入到终端
[root@VM_0_3_centos ~]# echo HelloWorld
HelloWorld
#用echo命令查看SHELL变量的值(前面有$符号)
[root@VM_0_3_centos ~]# echo $SHELL
/bin/bash
14、uptime
uptime命令用于查看系统的负载情况;
#获取当前系统状态信息
[root@VM_0_3_centos ~]# uptime
15:49:34 up 91 days, 22:39, 1 user, load average: 2.61, 2.95, 3.05
15、free
free命令用于显示当前系统中内存的使用情况,格式为:free [-m|-g]
[root@VM_0_3_centos ~]# free -m
total used free shared buff/cache available
Mem: 3789 2487 157 0 1144 995
Swap: 0 0 0
16、who
who命令用于查看当前登入主机的用户情况,格式为:who [参数]
[root@VM_0_3_centos ~]# who
root pts/0 2020-03-03 15:43 (111.173.188.89)
17、last
last命令用于查看所有系统的登入记录;
18、history
history命令用于显示历史执行过的命令;
历史命令会被保存到用户家目录中的“.bash_history”文件中;
注:Linux系统中以点(.)开头的文件均代表隐藏文件,一般会是系统文件;
19、more
more命令用于查看纯文本文件(较长的),格式为:more [选项] 文件
参数 | 作用 |
---|---|
-数字 | 预先显示的行数(默认为一页) |
-d | 显示提示语句与报错信息 |
#查看文本文件
[root@VM_0_3_centos ~]# more test.txt
20、head
head命令用于查看纯文本文档的前N行,格式为:head [选项] [文件]
参数 | 作用 |
---|---|
-n 10 | 显示10行 |
-n -10 | 正常输出(如cat命令),但不显示最后的10行 |
#查看文本文件前20行
[root@VM_0_3_centos ~]# head -n 20 test.txt
21、tail
tail命令用于查看纯文本文档的后N行,格式为:tail [选项] [文件]
参数 | 作用 |
---|---|
-n 10 | 显示后面的10行(末尾) |
-f | 持续刷新显示的内容 |
#查看文本文件后20行
[root@VM_0_3_centos ~]# tail -n 20 test.txt
22、useradd(创建新用户)
useradd命令用于创建新的用户,格式为:“useradd [选项] 用户名”
参数 | 作用 |
---|---|
-d | 指定用户的家目录(默认为/home/username) |
-D | 展示默认值 |
-e | 账号有效截至日期,格式:YYYY-MM-DD |
-g | 指定一个初始用户组(必须已存在) |
-G | 指定一个或多个扩展用户组 |
-N | 不创建与用户名同名的用户组 |
-s | 指定默认的Shell |
-u | 指定用户的UID |
#创建名为linuxprobe的用户,并定义家目录路径、UID以及登录解释器(不允许登录)
[root@VM_0_3_centos ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe
#查看linuxprobe用户的基本信息
[root@VM_0_3_centos ~]# id linuxprobe
uid=8888(linuxprobe) gid=8888(linuxprobe) groups=8888(linuxprobe)
23、passwd(修改用户密码)
passwd命令用于修改用户的密码,格式为:“passwd [选项] [用户名]”
- 修改当前用户的密码:
passwd
- 修改其他用户的密码:
passwd 其他用户名
参数 | 作用 |
---|---|
-l | 锁定用户禁止其登录 |
-u | 解除锁定,允许用户登录 |
–stdin | 允许从标准输入修改用户密码,如(echo “NewPassWord” | “passwd --stdin Username”) |
-d | 使账号无密码 |
-e | 强制用户下次登录时修改密码 |
-S | 显示用户的密码状态 |
24、userdel(删除用户)
userdel命令用户删除用户所有表格,格式为:“userdel [选项] [用户名]”
参数 | 作用 |
---|---|
-f | 强制删除用户、家目录及其相关文件 |
-r | 同时删除用户、家目录及其相关文件 |
例:
#删除用户与其家目录
[root@VM_0_3_centos ~]# userdel -d linuxprobe
25、usermod(修改用户)
usermod命令用于修改用户属性,格式为:“usermod [选项] [用户名]”
参数 | 作用 |
---|---|
-c | 填写账号的备注信息 |
-d -m | -m与-d连用,可重新指定用户的家目录并自动把旧的数据转移过去 |
-e | 账户到期时间,格式"YYYY-MM-DD" |
-g | 变更所属用户组 |
-G | 变更扩展用户组 |
-L | 锁定用户禁止其登录系统 |
-U | 解锁用户,允许其登录系统 |
-s | 变更默认终端 |
-u | 修改用户的UID |
26、groupadd(创建群组)
groupadd命令用于创建群组,格式为:“groupadd [选项] [群组名]”
#创建名称为linuxprobe的用户群组
[root@VM_0_3_centos ~]# groupadd linuxprobe
27、grep(对文本进行搜索)
grep命令用于对文本进行搜索,格式为:“grep [选项] [文件]”
搜索某个关键词:“grep 关键词 文本文件”
参数 | 作用 |
---|---|
-b | 将可执行文件(binary)当作文本文件来搜索 |
-c | 仅显示找到的次数 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择——仅列出没有关键词的行 |
#搜索在/etc/passwd中"/sbin/nologin"中出现的行,找出系统中不允许登录的用户
[root@VM_0_3_centos ~]# grep /sbin/nologin /etc/passwd
#找出文件"/usr/share/gedit/plugins/snippets/docbook.xml"中所有包含entry的行并输出到/root/lines
[root@VM_0_3_centos ~]# grep /usr/share/gedit/plugins/snippets/docbook.xml>>/root/lines
28、find(查找文件)
find命令用于查找文件,格式为:“fing [查找路径] [寻找条件] [操作]”
这里需要注意下find命令非常灵活导致参数非常复杂,这里不要求大家记住,用时来查即可;
对于常用搜索路径有几个小窍门:"~“代表用户的家目录,”.“代表当前目录,”/"代表根目录;
参数 | 作用 |
---|---|
-name | 匹配名称 |
-perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间(-n表示n天以内,+n指n天以前) |
-atime -n +n | 匹配访问文件的时间(-n表示n天以内,+n指n天以前) |
-ctime -n +n | 匹配修改权限的时间(-n表示n天以内,+n指n天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件f1新却比f2旧的文件 |
–type b/d/c/p/l/f | 匹配文件类型(块设备、目录、字符设备、管道、链接文件、文件文件) |
–size | 匹配文件的大小(+50K查找超过50K的文件,而-50K代表朝朝小于50K的文件) |
-prune | 忽略某个目录 |
–exec {} ; | 后面可接对搜索到结果进一步处理的命令 |
#搜索在/etc中所有以host开头的文件
[root@VM_0_3_centos ~]# find /etc -name "host*" -print
#搜索整个系统中所有包含SUID的文件(因SUID的数字表示法是4,而减号表示只要包含即可)
[root@VM_0_3_centos ~]# find / -perm -4000 -print
#找出用户linuxprobe的文件并复制到/root/findresults目录
#重点是"-exec {} \;"其中的{}代表find命令搜索出的文件,记住结尾必须是\;
[root@VM_0_3_centos ~]# find / -user linuxprobe -exec cp -arf {} /root/findresults/\;
29、查看系统版本
#这种方法只适合Redhat系的Linux
cat /etc/redhat-release
五、Linux安装JDK
-
下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载jdk-8u-linux-x64.tar.gz之类的版本
-
将解压后的jdk文件夹放入/usr/local/java中,如果没有该目录则新建;
-
修改配置文件/etc/profile,在文件末尾添加:
export JAVA_HOME=/usr/local/java/jdk1.8.0_221 export CLASSPATH=.:JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
修改完环境变量之后,通过source /etc/profile命令使修改的配置生效
- 测试jdk是否安装成功java -version,如果提示没有权限,则进入jdk的bin目录下,给java文件添加权限 chmod +x ./java
六、Linux安装Tomcat
-
下载: http://tomcat.apache.org/,下载版本为apache-tomcat-8.5.43.tar.gz
-
解压并将文件放入/usr/local/tocat
-
进入tomcat的bin目录,输入命令启动tomcat
./startup.sh //启动tomcat ./shutdown.sh //停止tomcat ./catalina.sh start //启动tomcat ./catalina.sh stop //停止tomcat //如果提示没有权限,则给上述文件添加权限
-
输入{ip}:8080可进入tomcat页面
如果无法进入,可能是linux系统未开放8080端口
-
linux系统开放8080端口,命令如下
firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload
七、Linux部署Springboot的web项目
1、利用Tomcat部署jar包
-
添加依赖(意思是tomcat由外部提供)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
-
修改启动类
集成SpringBootServletInitializer接口,并重写configure方法;
package com.zhhe.testdocker; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class TestDockerApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(TestDockerApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(this.getClass()); } }
-
将项目打包成jar包,并将jar包放入tomcat的webapps文件夹
-
在webapps文件夹下运行jar包
java -jar test-doerker-01.jar
- 运行成功后,即可正常访问项目(和在IDEA中运行的访问路径一样,如localhost:8080/home)
**注:**如果Linux安装了jdk,也可以直接在linux中运行jar包;
2、利用tomcat部署war包
-
在pom.xml中添加
<packing>war</packing>
- 打包成war包,并将war包放入tomcat的webapps文件夹中,war包会自动解压
-
进入tomcat下的bin文件夹,运行tomcat
./catalina.sh start
-
浏览器输入 {ip}:{端口号}/{war包名}/{接口名} (注:该端口名为tomcat启动的端口名,而不是war包里面的项目端口名)
192.168.181.128:8080/test-docker-01/home
八、Vim编辑器
-
vim编辑器的命令模式中常用的快捷键
命令 作用 dd 删除(剪切)光标所在整行 5dd 删除(剪切)从光标处开始的5行 yy 复制光标所在的整行 5yy 复制从光标处开始的5行 p 将之前删除(dd)或复制(yy)的数据黏贴到光标后 /字符串 在文本中从上至下搜索该字符串 ?字符串 在文本中从下至上搜索该字符串 n 显示搜索命令定位到的下一个字符串 N 显示搜索命令定位到的上一个字符串 u 撤销上一步的操作 -
vim编辑器的末行模式中的常用命令
命令 作用 :w 保存 :q 退出 :q! 强制退出(放弃对文本的修改内容) :wq! 强制保存退出 :wq 保存退出 :set nu 显示行号 :set nonu 不显示行号 :命令 执行该命令 :整数 跳转到该行
九、网卡配置
网卡类型:TYPE=Ethernet
地址分配模式:BOOTPROTO=static
网卡名称:NAME=eno16656
是否启动:ONBOOT=yes
IP地址:IPADDR=192.168.10.10
子网掩码:NETMASK=255.255.255.0
网关地址:GATEWAT=192.168.10.1
DNS地址:DNS1=192.168.10.1
重新启动网卡命令:“systemctl restart network”
十、管道符、重定向与环境变量
1、管道命令符
管道命令符"|"的作用是将前一个命令的标准输出当作后一个命令的标准输入,格式为:“命令A|命令B”;
#找出被限制登录用户的命令是:grep "/sbin/nologin" /etc/passwd
#统计文本行数的命令是:wc -l
#统计所有不允许登录系统的用户个数
[root@VM_0_3_centos ~]# grep "/sbin/nologin" /etc/passwd|wc -l
33
#用翻页的形式查看/etc目录中有哪些文件
[root@VM_0_3_centos ~]# ls -l /etc/ | more
total 1400
#向linuxprobe用户发送一封邮件
[root@VM_0_3_centos ~]# echo "Content" | mail -s "Subject" linuxprobe
#使用非交互式设置用户密码,将root的密码修改为linuxprobe
[root@VM_0_3_centos ~]# echo "linuxprobe" | passwd --stdin root
注:管道命令符可使用多次,如"命令A|命令B|命令C"
2、输入输出重定向
- 标准输入(STDIN,文件描述符为0):默认从键盘输入,为0时表示是从其他文件或命令的输出;
- 标准输出(STDOUT,文件描述符为1):默认输出到屏幕,为1时表示是文件;
- 错误输出(STDERR,文件描述符为2):默认输出到屏幕,为2时表示是文件;
对于输出重定向符有这些情况:
符号 | 作用 |
---|---|
命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 2> 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有内容的后面) |
命令 2>> 文件 | 将错误输出重定向到一个文件中(追加到原有内容的后面) |
命令 >> 文件 2>$1 | 将标准输出与错误输出一起写入到一个文件中(追加到原有内容的后面) |
对于输入重定向符:
符号 | 作用 |
---|---|
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇见分界符为止 |
命令 < 文件1 > 文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
#将man命令的帮助文档写入到/root/man.txt中
[root@VM_0_3_centos ~]# man bash > /root/man.txt
#向readme.txt文件中写入一行文字
[root@VM_0_3_centos ~]# echo "Welcome to www.google.com" > readme.txt
#向readme.txt文件中追加一行文字
[root@VM_0_3_centos ~]# echo "Welcome to www.google.com" >> readme.txt
#把readme.txt文件作为输入重定向给wc -l命令来计算行数,命令等同于"cat readme.txt | wc -l"
[root@VM_0_3_centos ~]# wc -l < readme.txt
3、命令行通配符
通配符 | 含义 |
---|---|
* | 匹配零个或多个字符 |
? | 匹配任意单个字符 |
[0-9] | 匹配范围内的数字 |
[abc] | 匹配已出的任意字符 |