Linux个人学习

一、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目录

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]匹配已出的任意字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值