常用的Linux知识

Linux基础篇

一、VM和Linux的安装

VM= virtual machine,虚拟机软件,创建一台虚拟机,这台虚拟机是Linux系统。

VMware的安装教程参考:VMware Workstation Pro 17虚拟机软件详细安装教程 - 知乎 (zhihu.com)

密钥网上很多,随便找找就能找到,这里放一个:MC60H-DWHD5-H80U9-6V85M-8280D

CentOS 7的安装配置教程参考:

CentOS 7 安装配置教程 - 知乎 (zhihu.com)

Linux的分区:boot分区,1g存放引导文件、swap分区,2g类似虚拟内存、/分区,下载的文件啥的都放在这个分区。

网络连接的三种模式:桥接模式(虚拟机的ip要和主机在一个网段,缺点是会占用网段的ip易造成IP冲突,桥接模式是虚拟系统直接接入到实际网络中)、NAT模式(网络地址转换模式,虚拟机可以和外部通信但是用的并不是和主机相同的网段,避免IP冲突,没有自己的公网IP,只能主动访问网络,不能被动被访问)、主机模式(独立的系统)

二、目录结构

13个常用目录 /bin:存放系统经常使用的指令;/sbin:存放系统管理员使用的系统管理程序;/home:存放普通用户的主目录,su登录后就是进入到这个目录下;/root:系统管理员目录;/lib:系统开机所需要最基本的动态连接共享库,类似于Windows的DLL文件;/etc:存放配置文件;/usr:用户安装的程序默认放在这里;/boot:存放启动Linux使用的一些核心文件;/tmp:存放一些临时文件;/dev:存放硬件映射成的文件;/media:系统自动识别一些设备,识别后把设备挂载到这个目录下;/opt:额外安装软件所存放的目录;/var:存放不断扩充的东西,如日志

Linux实操篇

一、Vi和Vim编辑器

Linux内置vi文本编辑器,vim是vi的增强版本具有程序编程的能力。

vim进入文件就是正常模式,i或者a进入编辑模式,:或者/进入命令模式。ESC再回到正常模式

命令模式:(1):wq!保存退出(2):q(退出)(3):q!(强制退出,不保存)(4)set nu设置行号(5)set nonu取消行号

正常模式:(1)yy:复制一行(2)nyy:复制n行(3)p:粘贴复制的东西(4)dd:删除一行(5)ndd:删除n行(6)/xxxx:查找关键词xxxx(7)n:查找完后回车,n可以切换下一个查找到的对象(8)G:定位到最后一行(9)gg:回到首行(10)u:撤销刚才输入的内容(11)n+G:定位到第n行

编辑模式:(1)i:从光标所在位置开始编辑(2)a:从光标下一个位置开始编辑

二、开机、重启和用户登录注销

关机、重启:(1)shutdown -h now 立即关机(2)shutdown -h 1 “hello,1分钟后会关机了”(3)shutdown -r now 立即重启(4)halt:关机(5)reboot:重启(6)sync:把内存的数据同步到磁盘

登录、注销:(1)su - 用户名(2)logout 该指令在图形运行级别无效

三、用户管理

Linux系统是一个多用户多任务的操作系统

1、添加用户:useradd (-d 指定目录) 用户名:创建新用户,自动创建和用户名同名的家目录在/home/下,也可以用-d指定目录,当su到这个用户时会直接到当前用户所在目录

2、指定/修改密码:passwd 用户名

3、删除用户:userdel 用户名:删除用户且保留该用户的家目录;userdel -r 用户名:删除用户同时删除家目录

4、查询用户:id 用户名

5、切换用户:su - 用户名

6、显示当前用户名:whoami 命令和 who am i 命令是不同的 2 个命令,前者用来打印当前执行操作的用户名,后者则用来打印登陆当前 Linux 系统的用户名

7、用户组:类似于角色,系统可以对有共性/权限的多个用户进行统一的管理,若新增用户没有指定组会默认新增一个同名的组并指定(1)新增组:groupadd 组名(2)删除组:groupdel 组名 (3)增加用户时直接加上组:useradd -g 用户组 用户名(4)给现有用户修改组:usermod -g 新用户组 用户名

ls -l * (*是通配符代表一个或者多个字符)

四、实用指令

1、运行级别

systemctl get-default:查看默认级别;systemctl set-default multi-user.target(级别3)/graphical.target(级别5)

2、找回root密码:重启系统进入开机界面然后按“e”进入编辑界面,切换成单用户模式,然后在配置文件后面加上新密码,等系统自动重启,新密码就生效了

3、帮助指令:(1)man获得帮助信息(2)help获得shell内部的帮助信息 (3)区别:help命令用于显示shell内部的帮助信息,而对于外部命令的帮助信息只能使用man

4、文件目录类:(1)pwd:显示当前工作目录的绝对路径(2)ls:-a显示所有的文件和目录,包括隐藏的;-l以列表形式显示信息;-h按照人性化显示,ll是ls -l的缩写(3)cd:切换到指定目录,~回到当前用户的家目录,..回到当前目录的上一级目录(4)mkdir:创建目录,-p创建多级目录即/home/新目录1/新目录2(5)rmdir:删除空目录,rm删除非空目录,搭配-rf(6)touch:创建空文件(7)cp:cp 拷贝文件 指定目录,-r递归复制整个文件夹,\cp强制拷贝(8)rm:删除文件或目录,-r递归删除整个文件夹,-f强制删除不提示(9)mv:移动文件或重命名,mv old new,如果old和new在同一个目录下是重命名,否则是移动文件(10)cat:查看文件内容,-n显示行号, | more是管道命令让用户可以交互,回车换行空格翻页(11)more:查看文件内容,以全屏幕按页显示,空格下一页回车下一行q立刻离开Ctrl+F向下一屏,Ctrl+B返回上一屏,:f输出文件名和当前行号(12)less:查看文件内容,按需加载内容,对于显示大型文件具有较高效率,/xxx查找xxx,n向下查找,N向上查找(13)echo:输出内容到控制台(14)head:显示文件开头部分,默认十行,-n x显示x行(15)tail:显示文件结尾部分,默认十行,-n x显示x行,-f实时监控文件的更新,Ctrl+c退出(16)>:输出重定向覆盖,>>:追加在文件最后,重定向是改变文件的方向,echo hello > test.txt是指把原本输出到控制台的hello重定向覆盖到文件test中,ls -al >>文件,可以把文件和目录信息写入文件中(17)ln:软连接或符号链接,类似Windows的快捷方式,ln -s 原文件或目录 软链接名,删除用rm即可(18)history:查看历史指令,n显示最近的n条指令,!n执行曾经执行过的第n号历史指令

5、时间日期类:(1)date:显示当前时间(2)date +%Y:显示当前年份(3)date +%m:显示当前月份(4)date +%d:显示当前是哪一天(5)date "+%Y-%m-%d %H:%M:%S":显示年月日时分秒(6)date -s 字符串时间,例如date -s "2020-11-03 20:02:10"(7)cal:显示当前日历,n显示n年所有日历

6、搜索查找类:(1)find:从指定目录向下递归遍历各个子目录,将满足条件的文件或目录显示在终端,find 搜索范围 选项 ,选项有-name xxxx;-user xxxx;-size n单位/+n单位/-n单位,单位有K M G,+是大于-是小于没有是等于(2)locate:快速定位文件路径,无需遍历整个文件系统速度快,基于数据库查询首次运行要用updatedb创建数据库(3)which:查看某个指令在哪个目录下,如which ls(4)grep:过滤查找,通常配合管道符号|,表示将前一个命令的处理结果输出传递给后面的命令处理,grep 选项 查找内容 源文件,常用选项:-n显示匹配行及行号,-i忽略字母大小写

7、压缩解压类:(1)gzip/gunzip:压缩和解压文件,后缀是.gz,这个只能gzip/gunzip 文件/文件.gz(2)zip/unzip:压缩和解压文件,后缀是.zip,-r递归压缩,-d指定解压后目录,这个可以zip [选项] xxx.zip 要压缩文件(3)tar:打包指令,打包后的文件是.tar.gz的文件,tar [选项] xxx.tar.gz 打包的内容(可以是多个内容用空格间隔) 选项通常是-zcvf -zxvf,-C指定解压后目录

五、组管理和权限管理

1、组基本介绍:Linux中的每个用户必须属于一个组,Linux中每个文件有所有者、所在组、其他组的概念,一般谁创建了文件/目录谁就是所有者,其所在的组就是所在组

2、文件/目录所有者:(1)ls -ahl:查看文件的所有者(2)chown 用户名 文件/目录名:修改文件/目录所有者,还可以chown 用户名:所在组 文件/目录名 改变所有者和所在组,加上-R可以递归修改某个目录下所有的用户(3)当某个用户创建一个文件后,这个文件的所在组默认就是该用户所在的组(3)chgrp 组名 文件名/目录名:修改文件/目录所在组,加上-R可以递归修改某个目录下所有的组(4)usermod -g 新组名 用户名:改变用户所在组(5)usermod -d 目录名 用户名:修改用户登录的初始目录,用户需要有进入到修改后新目录的权限

3、权限基本介绍:ll后每行都会有一个0-9位的权限(1)第0位确定文件类型(-:普通文件,d:目录,l:链接,c:字符设备文件,如鼠标键盘,b:块设备,如硬盘)(2)第1-3位确定所有者拥有该文件的权限(3)第4-6位确定所属组拥有该文件的权限(4)第7-9位确实其他用户拥有该文件的权限

4、rwx-权限详解:(1)作用到文件:[r]代表可读,可以读取查看[w]代表可写,可以修改但是不能删除,删除文件的前提是对该文件所在目录有w权限[x]代表可执行,文件可以被执行(2)作用到目录:[r]代表可读,可以ls查看目录内容[w]代表可写,对目录内创建+删除+重命名目录[x]代表可执行,可以cd进入目录

5、rwx的数字表示:(1)r=4,w=2,x=1:可以用整数数字代表英文字母权限(2) 0-9位权限后的数字:如果是文件就是1,是链接就是硬连接数,是目录就是子目录数+文件数

6、修改权限:(1)第一种方式:+、-、=变更权限 :u是所有者,g是所在组,o是其他人,a是所有人(u,g,o的总和)chmod u-x,g+w abc.txt(2)第二种方式:通过数字变更权限:chmod u=rwx,g=rx,o=x 文件/目录名相当于chmod 751 文件/目录名

六、Linux网络配置

1、查看指令:(1)ipconfig指令:查看Windows环境中的VMnet8网络配置的IPv4地址,即IP地址(2)ifconfig指令:查看Linux网络配置(3)ping:ping 目的主机,测试当前服务器是否可以连接目的主机

2、Linux网络环境配置(设置IP):(1)第一种方式(自动获取):Linux启动后会自动获取,缺点是每次自动获取的ip地址可能不一样(2)第二种方式(指定IP):直接修改配置文件来指定IP,编辑/etc/sysconfig/network-scripts/ifcfg-ens33,还要打开VMware的虚拟网络编辑器选择VMnet8,修改子网IP,打开NAT设置,修改网关,再重启网络服务或者重启系统生效service network restart或者reboot

3、设置主机名和hosts映射:(1)hostname:查看主机名(2)vim /etc/hostname:修改主机名,重启后生效(3)如何通过主机名找到某个Linux系统: [1]Windows中在C:\Windows\System32\drivers\etc\hosts文件指定即可,xxxxx hostname [2]Linux中在/etc/hosts文件指定即可,xxxx hostname(4)主机名解析过程分析:[1]Hosts:是一个文件,用来记录IP和Hostname(主机名)的映射关系 [2]DNS:是Domain Name System的缩写,翻译过来就是域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库 [3]浏览器输入WWW.baidu.com,浏览器先检测浏览器缓存中有没有该域名解析IP地址,再检测系统的DNS解析器缓存,再往上是检测文件中hosts文件有没有配置对应的域名IP映射,再往上就是到域名服务器进行解析域名(DNS域名劫持)

Shell编程篇

一、介绍Shell

1、何为Shell:(1)在工作中,我们需要编写Shell程序来进行服务器管理和维护(2)Shell是一个命令行解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序,Shell不止一个,国内主要是bash。

2、Shell脚本的执行方式:(1)脚本以#!/bin/bash开头(说明Shell的类型),后缀是.sh(2)方式一:输入脚本的绝对路径或相对路径,但需要有可执行权限 (3)方式二:sh+脚本,不需要有可执行权限

二、Shell变量

1、Shell的变量:(1)Shell中的变量分为:系统变量和用户自定义变量,set显示当前Shell中所有变量(2)变量的定义:[1]定义变量:变量名=值(echo输出是要带上$,否则识别为字符类型直接输出,想要输出变量的值要在变量前加$ ) [2]撤销变量:unset 变量 [3]声明静态变量:readonly 变量名=值,静态变量是不能unset撤销的(3)变量的命名规则:可以是数字、字母和下划线组成,但是不能以数字开头;等号两侧不能有空格;变量名称一般习惯为大写(4)将命令的返回值赋给变量:用反引号``或$( )(5)Shell的注释:#为单行注释,:<<! !为多行注释

2、设置环境变量:(1)在/etc/profile文件中定义一个环境变量(2)export 变量名=变量值(3)source 配置文件

3、位置参数变量:(1)相当于函数的实参,是在执行脚本时传递给脚本的(2)$n:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}(3)$ *:这个变量代表命令行中所有的参数,把所有的参数看成一个整体(4)$@:这个变量也代表命令行中所有的参数,不过是把每个参数区分对待($ *和$@不加双引号时二者没有区别)(5)$#:命令行中所有参数的个数

4、预定义变量:(1)就是Shell设计者事先已经定义好的变量,可以直接在脚本中使用(2)$$:当前进程的进程号,$!:后台运行的最后一个进程的进程号(在脚本中以后台方式运行别的脚本:正常执行指令+空格+&),$?:最后一次执行的命令的返回状态,如果是0则执行正确,非0不正确

三、Shell语句

1、运算符:(1)$((表达式))(2)$[表达式](3)expr 运算式(运算式之间要用空格间隔,如expr 3 + 4,除是\*,乘是/,取余是%)

2、条件判断:(1)基本语法:if [ condition ] (换行) then (换行) 要执行的语句 (换行) fi,非空返回true,可使用$?验证,0为true,>1为false(2)常用的判断条件有:[1]字符串比较用= [2]两个整数比较,-lt小于,-le小于等于,-eq等于,-gt大于,-ge大于等于,-ne不等于 [3]按照文件类型进行判断,-f文件存在并且是一个常规文件,-e文件存在,-d文件存在且是一个目录 [4]按照文件权限进行判断,-r有读的权限,-w有写的权限,-x有执行的权限

3、流程控制:(1)单分支:

if[ 条件判断式 ]
then
代码部分
fi

(2)多分支:

if[ 条件判断式 ]
then
代码部分
elif[ 条件判断式 ]
then
代码部分
fi

4、case语句:

case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
...省略其他分支...
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

5、for循环:(1)基本语法1:

for 变量 in 值1 值2 值3...
do
程序/代码
done

(2)基本语法2:

for((初始值;循环控制条件;变量变化))
do
程序
done

6、while循环:

while[ 条件判断式 ]
do
要执行的程序
done

循环是do done,条件判断是if fi和case esac

7、read读取控制台输入:(1)基本语法:read(选项)(参数)(2)选项:-p指定 读取值时的提示符,-t指定读取值时的等待时间,如果没有在指定时间输入就不再等了(3)参数:指定读取值的变量名(4)当脚本运行到read语句时会阻塞等待输入

8、函数:(1)Shell有系统函数也有自定义函数(2)系统函数:介绍basename、dirname [1]basename:basename后面跟一个完整路径,还可以再跟一个文件的后缀名suffix,去掉所有的前缀只留下文件名,若有suffix则连文件类型也要去了,主要用于截取一个很长的路径中的文件名 [2]dirname:和basename刚好相反,它拿到的是前面的部分,把最后的文件名去掉(3)自定义函数:在脚本中先定义出来一个函数,然后再调用 [1]定义:function 函数名(){(换行) 函数语句(换行) }(换行) [2]调用:函数名or函数名 $变量名1 $变量名2....(向自定义函数中传参数)

linux实战积累篇

一、nohup后台运行

nohup,全称是no hang up,用于让程序后台运行。在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中

语法格式是:nohup Command [ Arg … ] [ & ]

Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行

如果想输出重定向在Command后面加 > 要重定向的log文件 2>&1 &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值