学习笔记-Liunx

简介

Linux 内核最初只是由芬兰人林纳斯·托瓦兹 (Linus Torvalds) 在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX( 可移植操作系统接口)和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

image

开机

开机会启动许多程序。它们在 Windows 叫做 "服务" (service),在 Linux 就叫做 "" 守护进程" (daemon) 。

登陆方式:

  • 命令行登录
  • ssh 登录
  • 图形界面登录

最高权限账户为 root,可以操作一切

关机

sync  #将数据同步到硬盘中,防止关机后数据丢失

shutdown

shutdown -h 10 # 十分钟后关机
shutdown -h now # 立刻关机
shutdown -h 20:56 # 指定时间关机

reboot # 重启

halt # 关闭系统 等价于 shutdown -h now 、 poweroff

系统目录结构

1、一切皆文件

2、根目录 “ / ” ,所有的文件都挂载在这个节点下

以下是对这些目录的解释:

  • /bin
    bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

  • /boot:勿动
    这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev :
    dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

  • /etc:
    etc 是 Etcetera(等等) 的缩写, 这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home
    用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的

  • /lib:(勿动
    lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media
    linux 系统会自动识别一些设备,例如 U 盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

  • /opt
    opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个 ORACLE 数据库则就可以放到这个目录下。默认是空的。

  • /proc
    proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的 ping 命令,使别人无法 ping 你的机器:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin
    s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

  • /selinux
    这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放 selinux 相关的文件的。

  • /srv
    该目录存放一些服务启动之后需要提取的数据。

  • /sys

    这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

    sysfs 文件系统集成了下面 3 种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

    该文件系统是内核设备树的一个直观反映。

    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp
    tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

  • /usr
    usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

  • /usr/bin:
    系统用户使用的应用程序。

  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:
    内核源代码默认的放置目录。

  • /var
    var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

  • /www : 存放服务器网站相关资源,环境,项目(宝塔创建的?)

命令

快捷:

Tab 快速补充当前页存在的目录、文件的名称

Ctrl+C 强制退出当前命令

Ctrl+Z 撤回命令

clear # 清除
tar -zxvf xxx.tar  # j

目录管理

mkdir 目录名  # 创建目录
mkdir -p test1/test2/test3  # 创建层级目录

rmdir xx # 移除目录(只能是空的文件夹)
rmdir -p test1/test2 # 强制删除

cp 文件 目标地址 # 复制拷贝 重复会询问覆盖/放弃

rm 移除文件或目录

rm -f   #  忽略不存在的文件,不出现警告,强制删除
rm -r	#	递归删除目录
rm -i	#	互动询问是否删除

mv 移动文件 / 重命名

 -f #强制
 -u # 只替换已经更新过的文件
mv 文件  地址  # 移动
mv 文件名1  文件名2  #重命名

切换 cd

绝对路劲以 / 开头,相对路径 ../ 路径

在 A,去 D:

cd D

cd ./D

cd /A/D

cd ../A/D
image

cd     # 切换目录命名
cd ..  # 返回上一级 
./     # 当前目录
cd ~   # 回到当前用户目录

列出目录: ls

ls
ls -a		#查看全部文件,包括隐藏文件
ls -l		#列出所有文件,包括文件属性和权限,没有隐藏文件
ls -al		# 组合

显示当前路径 pwd

pwd

基本属性

image

第一个字符:

  • 【d】 :目录
  • 【-】 : 文件
  • 【l】 : 链接文档
  • 【b】 : 装置文件里面的可供储存的接口设备 (可随机存取装置)
  • 【c】 : 装置文件里面的可供储存的接口设备 (可随机存取装置)

接下来以 3 个字符为一组,均为【rwx】组合:【r】可读,【w】可写,【x】可执行,没有会以【-】代替

image

  • 属主:谁创建的

  • 属组:归于那个用户组

修改基本属性

1、chgrp:更改文件属组

chgrp -R 属组名  文件名

-R∶递归更改文件属组,就是在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目录下的所有文件的属组都会更改。

2、chown: 更改文件属主,也可同时更改属组

chown -R 属主名 文件名
chown -R 属主名 : 属组名 文件名

3、chmod :更改文件 9 个属性

chmod -R xyz 文件或目录
r:4		w:2		x:1
可读可写不可执行: rw- 	6
可读可写可执行:	 rwx     7

chmod 777 文件名

文件内容查看

  • cat :由第一行开始显示文件内容

  • tac : 从最后一行开始显示

    image

  • nl :显示时顺道输出行号

    image

  • more :一页页显示文件内容 空格翻页,回车向下看一行、:f 显示当前行号

    image

  • less :于 more 相似,可以往前翻页 空格翻页、上下键翻页,回车下一行、【q】结束、【/】 向下查找、【?】向上查找、【n/N】结合查找上下跳转

  • head :只看头几行

    image

  • tail : 只看尾巴几行

ifconfig:查看网络配置

链接

硬链接:类似拷贝,源文件删除,硬链接还能访问,可用于重要文件的安全保护

软连接:类似 Window 快捷方式,

创链接:

ln 源文件  链接  # 硬链接
ln -s 源文件  链接  # 软链接

touch 创建文件命令

echo 向文件中输入字符串

[root@iZf8z25xnm9ajwj0x1efp9Z home]# ls
redis  www
[root@iZf8z25xnm9ajwj0x1efp9Z home]# touch test1   
[root@iZf8z25xnm9ajwj0x1efp9Z home]# ls
redis  test1  www
[root@iZf8z25xnm9ajwj0x1efp9Z home]# ln test1 t2
[root@iZf8z25xnm9ajwj0x1efp9Z home]# ls
redis  t2  test1  www
[root@iZf8z25xnm9ajwj0x1efp9Z home]# ln -s test1 t3
[root@iZf8z25xnm9ajwj0x1efp9Z home]# ls
redis  t2  t3  test1  www
[root@iZf8z25xnm9ajwj0x1efp9Z home]# ls -l
total 8
drwx------ 2 redis redis 4096 Jan 27 17:22 redis
-rw-r--r-- 2 root  root     0 Jan 29 13:58 t2
lrwxrwxrwx 1 root  root     5 Jan 29 13:59 t3 -> test1
-rw-r--r-- 2 root  root     0 Jan 29 13:58 test1
drwx------ 3 www   www   4096 Jan 27 17:21 www
[root@iZf8z25xnm9ajwj0x1efp9Z home]# echo "hello world" >>test1
[root@iZf8z25xnm9ajwj0x1efp9Z home]# cat test1 
hello world
[root@iZf8z25xnm9ajwj0x1efp9Z home]# cat t2
hello world
[root@iZf8z25xnm9ajwj0x1efp9Z home]# cat t3
hello world
[root@iZf8z25xnm9ajwj0x1efp9Z home]# 

删除测试:

[root@iZf8z25xnm9ajwj0x1efp9Z home]# rm -rf test1
[root@iZf8z25xnm9ajwj0x1efp9Z home]# ls
redis  t2  t3  www
[root@iZf8z25xnm9ajwj0x1efp9Z home]# cat t2
hello world
[root@iZf8z25xnm9ajwj0x1efp9Z home]# cat t3
cat: t3: No such file or directory
[root@iZf8z25xnm9ajwj0x1efp9Z home]# 

Vim 编辑器

基本上 viwvim 共分为三种模式,分别是命令模式 (Command mode),输入模式(lnsert mode) 和底线命令模式(Lastline mode)。这三种模式的作用分别是∶

vim 文件 # 如果存在则打开编辑,如果不存在则新建

命令模式

输入 vim test.txt 刚进入时处于命令模式:

  • 输入【i、a、o】进入输入模式
  • 输入【x】删除光标所处的字符
  • 输入【:】切换到底线命令模式

image

输入模式

  • 【esc】退出输入模式,切换到命令模式
  • 正常输入

image

底线命令模式

  • 【q】退出程序
  • 【w】保存
  • 【wq】
  • 【set nu】 显示行号

image

命令模式 - 光标移动

h 或 向左箭头键 (←) 光标向左移动一个字符
j 或 向下箭头键 (↓) 光标向下移动一个字符
k 或 向上箭头键 (↑) 光标向上移动一个字符
l 或 向右箭头键 (→) 光标向右移动一个字符
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down] 按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
n< space> 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。
0 或功能键 [Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键 [End] 移动到这一行的最后面字符处 (常用)
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
G 移动到这个档案的最后一行 (常用)
nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行 (可配合 :set nu)
gg 移动到这个档案的第一行,相当于 1G 啊!(常用)
n< Enter> n 为数字。光标向下移动 n 行 (常用)

命令模式 - 搜索

搜索替换
/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用)
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。

命令模式 - 复制贴贴

删除、复制与粘贴
x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键 ), X 为向前删除一个字符 ( 相当于 [backspace] 亦即是退格键 )( 常用)
nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd 删除游标所在的那一整行 (常用)
ndd n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除游标所在处,到该行的最后一个字符
d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy 复制游标所在的那一行 (常用)
nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行 (常用)
y1G 复制游标所在行到第一行的所有数据
yG 复制游标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用)
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除 10 行,[10cj]
u 复原前一个动作。(常用)
[Ctrl]+r 重做上一个动作。(常用)

账户管理

useradd

useradd -选项 用户名
  • -m :自动创建这个用户的主目录 /home/ 用户名
  • -G : 给用户分配组,后面跟组名

userdel

userdel -选项 用户名
  • -r 删除用户时将他的目录页也一并删除

usermod 修改用户

usermod  -d   用户组(/home/www) 用户名  # 修改用户的所属组

su 切换用户

[root@iZf8z25xnm9ajwj0x1efp9Z home]# useradd -m yzxtest
[root@iZf8z25xnm9ajwj0x1efp9Z home]# ls
redis  test.txt  www  yzxtest
[root@iZf8z25xnm9ajwj0x1efp9Z home]# su yzxtest
[yzxtest@iZf8z25xnm9ajwj0x1efp9Z home]$ 
[yzxtest@hostname0yang root]$ exit
exit
[root@hostname0yang ~]#

普通用户是 $ 符号,# 是超级用户、

passwd 密码配置

注意 Liunx 输入密码时不会显示

root 用户:

[root@hostname0yang home]# passwd yzxtest  # 修改 yzxtest 用户的面码
Changing password for user yzxtest.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@hostname0yang home]# 

普通用户:

[yzxtest@hostname0yang ~]$ passwd   # 修改密码
Changing password for user yzxtest.
Changing password for yzxtest.
(current) UNIX password: # 这里输入现在的秘密
New password: #输入新密码
BAD PASSWORD: The password is the same as the old one  # 新密码与原密码一样。驳回
New password: #输入新密码
Retype new password: #再次输入新密码 
passwd: all authentication tokens updated successfully.  # 成功
[yzxtest@hostname0yang ~]$

锁定账户

锁定之后账户被冻结,不能登入系统

passwd -l 用户名
passwd -d 用户名  # 冻结的同时清除密码

拓展:文件 /etc/passwd

用户名: 口令 (密码,不可见): 用户标识号: 组标识号: 注释性描述: 主目录: 登录 shell

登录口令:真正的密码加密后放在 /etc/shadow 文件中,保证安全性

image

修改主机名称

hostname 名称  # 重启后即可更新

用户组管理

​ 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理 (开发、测试、运维、root)。不同 Linux 系统对用户组的规定有所不同,如 Linux 下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

​ 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group 文件的更新。

创建一个用户组

[root@hostname0yang home]# groupadd group1  # 创建
[root@hostname0yang home]# cat /etc/group	#查看
root❌0:
bin❌1:
daemon❌2:
... #这里省略
yzxtest❌1003:
group1❌1004:
[root@hostname0yang home]# 

groupadd -g 5200 group1   # 指定id ,不指定时自增1

删除用户组

groupdel 组名

修改用户组的权限信息

groupmod -g 新id -n 新名字 组名

切换用户组

$ newgrp 组名

磁盘管理

df (列出文件系统整体的磁盘使用量) du(检测磁盘空间使用量)

  • 【-h】 大小使用 K、M、G 简写

image

检测根目录下每个目录所占大小

image

Mac 或者想使用 Linux 挂载我们的一些本地磁盘或者文件!

挂载:mount

image

卸载:umount

umount -f 挂载位置  # -f强制卸载

进程管理

ps 查看当前系统中正在执行的各种进程的信息

  • 【-a】 显示当前终端运行的所有的进程信息
  • 【-u】以用户的信息显示进程
  • 【-x】 显示后台运行进程的参数
ps -aux|grep mysql # 查询关于mysql相关的进程

# |  在 Liunx 中是管道符,A|B 是指 A 执行的结果作为 B 的参数
# grep  查找响应字符串

image

  • 【-ef】查询父进程的信息
ps -ef|grep mysql

pstree -pu
-p 显示父id
-u 显示用户组

image

kill 杀死进程

kill -9 进程的id  #

环境安装

安装有 3 钟方式:rpm、解压缩、yum 在线安装

JDK 安装

找到 jdk 的 rpm ,没有的下载后用 Xftp 传输过来

rpm -ivh xxx.rpm  #安装

rpm -qa|grep jdk # 查询信息

rpm -e --nodeps 上面的信息 # 卸载环境

image

配置环境变量 /etc/profile

export JAVA_HOME=/opt/module/jdk1.8.0_301
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile # 刷新使配置生效

检测

[root@hostname0yang /]# java -version
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
[root@hostname0yang /]#

发布

#开启防火墙端口
firewall -cmd --zone=public --add-port=xxx/tcp --permanent
#重启防火墙
systemctl restart firewalld.service
#查看开放的端口
firewall-cmd --list-ports

image

Tomcat

Docker

yum 在线安装

yum -y install yum源