【笔记】Linux基础——尚硅谷-韩顺平

linux目录结构

根目录下的目录结构

  1. /bin (/usr/bin, /usr/local/bin)这个目录存放着经常使用的命令
  2. /sbin(/usr/sbin, /usr/local/sbin)存放的是系统管理员使用的系统管理程序
  3. /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
  4. /root 该目录为系统管理员,也称作超级权限者的用户主目录;
  5. /lib 系统开机所需要的最基本的动态链接共享库,其作用类似于windows里面的dll文件,几乎所有的应用程序都需要用到这些共享库
  6. /lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
  7. /etc 所有系统管理所需要的配置文件和子目录 my.conf
  8. /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
  9. /boot 存放启动linux时使用的一些核心文件,包括一些链接文件以及镜像文件
  10. /proc 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
  11. /srv service缩写,该目录存放一些服务启动之后需要提取的数据
  12. /sys 这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统
  13. /tmp 这个目录是用来存放一些临时文件
  14. /dev 类似于windows的设备管理器,把所有的硬件用文件的形式存储
  15. /media linux系统会自动识别一些设备,例如U盘,光驱等等,当识别后,linux会把识别的设备挂在到这个目录下
  16. /mnt 系统提供该目录是为了让用户临时挂在别的文件系统的,我们可以将外部的存储挂在到/mnt/上,然后进入该目录就可以查看里面的内容了
  17. /opt 这是给主机额外安装软件所摆放的目录,如安装oracle数据库就可以放到该目录下
  18. /usr/local 这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方法安装的程序
  19. /var 这个目录存放着不断扩充的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件
  20. /selinux selinux是一种安全子系统,它能控制程序只能访问特定文件

总结:

  1. linux的目录中有且只要一个根目录
  2. linux各个目录存放的内容是规划好,不用乱放文件
  3. linux是以文件的形式管理我们的设备,因此linux系统,一切都是文件

vi与vim编辑器

所有的linux系统都会内建vi文本编辑器

vim具有程序编辑的能力,可以看做是vi的增强版本

vi和vim常用的三种模式

  1. 正常模式
  2. 插入模式, 一般输入i即可进入插入模式
  3. 命令行模式,提供保存,退出等相关命令

安装vim

yum -y install vim*

命令行模式下常用三个命令:

命令含义
:wq保存并退出
:q退出
:q!强制退出

vi和vim常用快捷键

  1. 拷贝当前行yy,拷贝当前行向下5行5yy,并粘贴
  2. 删除当前行dd, 向下删除5行5dd
  3. 在文件中查找某个单词,命令行下 /搜索内容 回车
  4. 设置文件的行号,命令行下:set nu, 取消行号 :set nonu
  5. 达到首行gg和末尾行G
  6. 撤销输入u
  7. 编辑文件,并将光标移动到第某行,输入行数,快捷键shfit+g

开关机及用户注销命令

开关机命令

shutdown

命令含义
shutdown -h now立即关机
shutdown -h 11分钟后关机
shudown -r now立即重启

halt

直接使用,效果等同于关机

reboot

现在重启计算机

sync

将内存数据同步到磁盘

用户登录与注销

  1. 登录时尽量少用root账号登录,因为它是系统管理员,登录后用 su - 用户名 命令来切换成系统管理员身份
  2. 在提示符下输入logout即可注销用户, 也可以使用exit命令注销该用户

用户管理

Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须向系统管理员申请一个账号,然后以这个账号的身份进入系统

创建用户指定密码

添加用户

useradd [选项] 用户名

useradd hxb

在/home目录中就会创建一个hxb的文件夹

给新创建的用户指定家目录: useradd -d 指定目录 用户名

useradd -d /home/hxb/ hxb

指定密码

passwd 用户名

passwd hxb

删除用户

  1. 删除用户,并保留家目录
    userdel 用户名
userdel hxb
  1. 删除用户,并同时删除家目录
    userdel -r 用户名
userdel -r hxb

查询用户信息

id 用户名

id hxb
uid=1001(hxb) gid=1001(hxb) 组=1001(hxb)

其中,uid表示用户的标识,gid标识用户组的id,组标识用户组的名称

切换用户

su - 切换的用户名称

[root@localhost home]# su - hxb
[hxb@localhost ~]$ 

从高权限的用户到低权限的用户是不需要密码的,反之则需要密码
exit 返回到原来的目录

[root@localhost ~]# su - hxb
上一次登录:二 4月  7 02:38:11 CST 2020pts/0 上
[hxb@localhost ~]$ exit
登出

whoami 显示当前用户

[root@localhost ~]# whoami
root

用户组

类似于角色,系统可以对有共性的多个用户进行统一的管理

增加组

groupadd 组名

[root@localhost ~]# groupadd wudang

删除组

groupdel 组名

[root@localhost ~]# groupdel wudang

增加用户时直接加上组

useradd -g 用户组 用户名

# 增加一个用户huangxb,直接将他指定到wudang
[root@localhost ~]# groupadd wudang
[root@localhost ~]# useradd -g wudang huangxb

修改用户组

usermod -g 用户组 用户名

[root@localhost ~]# usermod -g shaolin huangxb
[root@localhost ~]# id huangxb
uid=1002(huangxb) gid=1003(shaolin) 组=1003(shaolin)

用户和组的配置文件

目录描述
/etc/passwd用户配置文件(用户信息)
/etc/group组配置文件(组信息)
/etc/shadow口令配置文件(密码)

实用指令

指定运行级别

  1. 切换到指定运行级别的指令
    init [0123456]
# 关机
[root@localhost ~]# init 0
标识描述
0关机
1单用户(找回丢失密码)
2多用户无网络
3多用户有网络
4保留
5图形界面
6重启

系统的运行级别的配置文件/etc/inittab
2. 找回root密码
思路:进入到单用户模式,然后修改root密码

帮助指令

当我们对某个指令不熟悉时,可以使用Linux提供的帮助指令来了解指令的使用方法

  1. 语法
    man [命令或配置文件] (功能描述,获得帮助信息)
[root@localhost ~]# man ls
  1. help指令
    help 命令
help cd

文件目录类

pwd 指令

pwd (功能描述:显示当前工作目录的绝对路径)

ls 指令

ls [选项] [目录或是文件]
  1. 选项
    -a 显示所有文件(包括隐藏文件)
    -l 以列表的形式显示文件

cd 指令

cd [参数] (功能描述:切换到指定目录)

mkdir 指令

mkdir [选项] 要创建的目录
[root@localhost home]# mkdir /home/dog

-p 创建多级目录(一次性创建)

[root@localhost home]# mkdir -p /home/animal/tiger/son

rmdir 指令

rmdir [选项] 要删除的空目录

如果要删除非空目录需要使用 rm -rf 文件名

[root@localhost home]# rm -rf test.java

touch 指令

创建空文件

touch 文件名称 
[root@localhost home]# touch Hello.java

cp 指令

拷贝文件到指定目录

cp [选项] source dest
[root@localhost test2]# cp Hello1.java ../test

-r : 递归复制整个文件夹

rm 指令

删除文件或目录

rm [选项] 要删除的文件或目录

-r : 递归删除该文件夹
-f : 强制删除不提示

[root@localhost home]# rm -r test
rm:是否进入目录"test"? y
rm:是否删除普通空文件 "test/Hello1.java"?y
rm:是否删除目录 "test"?y

mv 指令

mv移动文件与目录或重命名

mv oldNameFile newNameFile (功能描述:重命名文件)
mv 文件路径1 文件路径2 (功能描述:移动文件)

cat 指令

cat 查看文件内容

cat [选项] 要查看的文件

-n: 显示行号,
| more 显示更多,可以折叠多余的内容

[root@localhost ~]# cat -n test.txt | more

more 指令

more指令是一个基于VI编辑器的文本过滤器,以全屏幕的方式按页显示文本文件的内容

more 要查看的文件

less 指令

less指令用来分屏查看文件内容,对于显示大型文件具有较高的效率

less 要查看的文件内容

输出重定向指令和追加指令

>输出重定向    >> 追加
指令描述
ls -l > 文件列表的内容吸入文件中(覆盖写)
ls -al >> 文件将列表中的内容追加到文件中
cat 文件1 > 文件2将文件1中的内容覆盖写入文件2中
echo “内容” >> 文件将内容追加到文件的末尾
[root@localhost ~]# ls -l > a.txt
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  Hello.java  test.txt
[root@localhost ~]# cat -n a.txt | more
     1	总用量 8
     2	-rw-------. 1 root root 1257 3月   7 21:38 anaconda-ks.cfg
     3	-rw-r--r--. 1 root root    0 4月  13 02:53 a.txt
     4	drwxr-xr-x. 2 root root    6 4月   6 22:08 Hello.java
     5	-rw-r--r--. 1 root root 1008 4月   6 22:42 test.txt
[root@localhost ~]# echo "这是一个测试" >> a.txt
[root@localhost ~]# cat a.txt
总用量 8
-rw-------. 1 root root 1257 3月   7 21:38 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 4月  13 02:53 a.txt
drwxr-xr-x. 2 root root    6 4月   6 22:08 Hello.java
-rw-r--r--. 1 root root 1008 4月   6 22:42 test.txt
这是一个测试

echo 指令

echo输出内容到控制台

echo [选项] [输出内容]
# 输出linux环境变量
[root@localhost ~]# echo $PATH
/usr/local/jdk1.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

head 指令

head指令用于显示文件的开头部分内容,默认情况下head显示文件的前10行内容

head 文件       (显示文件的前10行数据)
head -n 行数 文件  (显示文件指定行数数据)

tail 指令

tail用于输出文件中尾部的内容, 默认情况下tail指令显示文件的后10行内容

tail 文件             (查看文件后10行内容)
tail -n 行数 文件      (查看文件后末尾几行的内容)
tail -f 文件          (实时查看该文档所有更新)

ln 指令

软连接也叫符号连接,类似于windows里的快捷方式,主要存放了链接其他文件的路径

ls -s [原文件或目录] [软链接名]   (描述:给原文件创建一个软链接)
[root@localhost ~]# ln -s a.txt linkToA
[root@localhost ~]# ls -l 
总用量 12
-rw-------. 1 root root 1257 3月   7 21:38 anaconda-ks.cfg
-rw-r--r--. 1 root root  249 4月  13 02:59 a.txt
drwxr-xr-x. 2 root root    6 4月   6 22:08 Hello.java
lrwxrwxrwx. 1 root root    5 4月  13 03:21 linkToA -> a.txt
-rw-r--r--. 1 root root 1008 4月   6 22:42 test.txt

history 指令

查看已经执行过历史命令,也可以执行历史指令
history 显示所有的历史指令
!100 执行编号为100的指令

时间日期类

date 指令

指令描述
date显示当前时间
date +%Y显示当前年份
date +%m显示当前月份
date +%d显示当前那一天
date “+%Y-%m-%d %H:%M:%S”显示年月日时分秒
date -s “2018-10-10 11:22:10”设置系统时间

cal 指令

查看日历时间
cal 查看当前月份日历
cal 年份 查看当前年份日历

搜索查找类

find 指令

find指令将从指定目录向下递归地便利其各个子目录,将满足条件的文件或目录显示在终端

find [搜索范围] [选项]
# 按文件名查找某目录下的文件
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  Hello.java  linkToA  test.txt
[root@localhost ~]# find /root -name a.txt
/root/a.txt

# 按文件用户名查找
find /root -user huangxb

# 按大于某大小的文件查找某文件
find /root -size +20M

locate 指令

locate指令可以快速地位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库事先快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快,为了保证查询结果的准确度,管理员必须保证更新locate时刻

由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库

grep 指令

grep 过滤查找,管道符, “|” 标识将前一个命令的处理结果输出传递给后面的命令处理

grep [选项] 查找内容 源文件
  • -n 显示匹配的行及行号
  • -i 忽略大小写
# 区分大小写
[root@localhost ~]# cat Hello.java | grep -n hello

# 不区分大小写
[root@localhost ~]# cat Hello.java | grep -ni hello

压缩和解压缩类

gzip/gunzip 指令

  1. gzip 用于压缩成*.gz文件
[root@localhost ~]# gzip a.txt
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt.gz  Hello.java  linkToA  test.txt
  1. gunzip 用于解压*.gz文件
[root@localhost ~]# gunzip a.txt.gz
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  Hello.java  linkToA  test.txt

zip/unzip 指令

zip用于压缩文件,unzip用于解压文件,这个在项目打包发布中很有用

zip [选项] xxx.zip   将要压缩的内容

zip -r xxx.zip /home/ 递归压缩某个目录

tar 指令

tar指令是打包指令, 最后打包后的文件是*.tar.gz文件

tar [选项] XXX.tar.gz 打包的内容
选项描述
-c产生.tar打包文件
-w显示详细信息
-f指定压缩后的文件名
-z打包同时压缩
-x解包.tar文件
-v显示包中的文件
# 将a.txt和a1.txt打包成a.tar.gz文件
[root@localhost ~]# tar -zcvf a.tar.gz a.txt a1.txt
a.txt
a1.txt
[root@localhost ~]# ls
a1.txt  anaconda-ks.cfg  a.tar.gz  a.txt  Hello.java  linkToA  test.txt

# 将目录压缩成a.tar.gz文件
tar -zcvf a1.tar.gz /test

# 解压文件
tar -zxvf a.tar.gz

# 解压文件到指定目录(这个目录必须是存在的)
tar -zxvf a.tar.gz -C /home/

组管理及权限管理

  • 文件/目录所有者
    一般为文件的创建者,谁创建了改文件,就自然的成为了改文件的所有者

文件目录和组

	查看文件所有者: ls -ahl
# 创建一个用户和所属组
[root@localhost ~]# useradd -g police tom

# 切换到tom用户,并创建一个ok.txt文件
[root@localhost ~]# su - tom
[tom@localhost ~]$ touch ok.txt

# 查该文件所属的用户和组
[tom@localhost ~]$ ls -ahl
总用量 12K
drwx------. 2 tom  police  76 5月   6 23:38 .
drwxr-xr-x. 8 root root   123 5月   6 23:37 ..
-rw-r--r--. 1 tom  police  18 8月   8 2019 .bash_logout
-rw-r--r--. 1 tom  police 193 8月   8 2019 .bash_profile
-rw-r--r--. 1 tom  police 231 8月   8 2019 .bashrc
-rw-r--r--. 1 tom  police   0 5月   6 23:38 ok.txt
	改变文件所有者: chown 用户名 文件名
# 将app.txt文件所有者更改为tom
[root@localhost home]# chown tom app.txt
	修改文件目录所在组 chgrp 组名 文件名
[root@localhost home]# chgrp police app.txt
[root@localhost home]# ll
总用量 4
-rw-r--r--. 1 tom     police    0 5月   6 23:46 app.txt
drwx------. 2 tom     police   97 5月   6 23:46 tom

文件权限管理

-rw-r–r--. 1 tom police 0 5月 6 23:38 ok.txt

  • - 表示文件类型:- 普通文件;d 目录;l 软链接;c 字符设备;b 块文件
  • rw- 表示所有者的权限,rw表示即可读又可写
  • r– 表示文件所在组的用户权限
  • r– 表示文件其他组用户的权限
  • 1 如果是文件表示硬链接数目,如果是目录表示该目录的子目录的数量
  • tom 表示文件的所有者
  • police 表示文件所在组
  • 0 表示文件的大小
  • 5月 6 23:38 表示文件最后修改时间

rwx作用到文件;表示可读,可写,可执行
rwx作用到目录;表示可读,可修改,可进入该目录

修改权限 - chmod

通过chmod指令,修改文件或者目录的权限

  1. u表示所有者
  2. g表示所有组
  3. o表示其他人
  4. a表示所有人
  • 通过 + - = 变更文件的权限
# 给所在组增加读写执行权限
[tom@localhost ~]$ chmod -c g=rwx ok.txt
mode of "ok.txt" changed from 0744 (rwxr--r--) to 0774 (rwxrwxr--)
[tom@localhost ~]$ ll
总用量 0
drwxr-xr-x. 2 tom police 6 5月   7 00:12 dir
-rwxrwxr--. 1 tom police 0 5月   6 23:38 ok.txt

# 给文件其他组增加写的权限
[tom@localhost ~]$ chmod -c o+w ok.txt
mode of "ok.txt" changed from 0774 (rwxrwxr--) to 0776 (rwxrwxrw-)
[tom@localhost ~]$ ll
总用量 0
drwxr-xr-x. 2 tom police 6 5月   7 00:12 dir
-rwxrwxrw-. 1 tom police 0 5月   6 23:38 ok.txt
  • 通过数字变更权限
    规则:r=4 w=2 x=1
    rwx=4+2+1=7
    chmod u=rwx,g=rx,o=x 文件目录名 相当于 chmod 751 文件目录名
# 将改文件开放所有权限
[tom@localhost ~]$ chmod 777 ok.txt
[tom@localhost ~]$ ll
总用量 0
drwxr-xr-x. 2 tom police 6 5月   7 00:12 dir
-rwxrwxrwx. 1 tom police 0 5月   6 23:38 ok.txt

修改文件所在组 - chgrp

chgrp 新组 文件名

任务调度

任务调度:是指系统在某个时间执行的特定的命令或程序

crontab [选项]

常用选项

  • -e 编辑定时任务
  • -l 查看定时任务
  • -r 删除定时任务
  • service crond restart 重启任务调度

linux磁盘分区,挂载

分区基础知识

mbr 分区

  • 最多支持四个主分区
  • 系统只能安装在主分区
  • 扩展分区腰斩一个主分区
  • MBR最大支持2TB,但拥有最好的兼容性

gtp 分区

  • 支持无限多个主分区
  • 最大支持18EB的大容量(EB=1024PB,1PB=1024TB)
  • windows7 64位以后支持gtp

Linux分区

  • linux来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,LInux中每个分区都是用来组成整个文件系统的一部分

磁盘情况查询

df -h  (描述:查询系统整体使用情况)
[huangxb@localhost home]$ df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 475M     0  475M    0% /dev
tmpfs                    487M     0  487M    0% /dev/shm
tmpfs                    487M  7.7M  479M    2% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  3.4G   14G   20% /
/dev/sda1               1014M  137M  878M   14% /boot
tmpfs                     98M     0   98M    0% /run/user/0
du -h /目录 (描述:查询指定目录的磁盘占用情况)
  1. -s 指定目录中占用汇总
  2. -h 带计量单位
  3. -a 含文件
  4. –max-depth=1 子目录深度
  5. -c 列出明细的同事,增加汇总量
# 查询/opt目录磁盘占用情况,深度为1
du -ahc /opt

进程管理

基本介绍

  • 在linux中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号
  • 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程
  • 一般系统的服务都是以后台进程的方式存在,而且都会常驻系统中,直到关机才结束

显示系统执行的进程

ps命令用来查看目前系统中进程的情况
ps显示的信息选项

字段描述
PID进程识别号
TTY终端机号
TIME此集成所消CPU时间
CMD正在执行的命令或进程名
  • ps -a 显示当前终端的所有进程信息
  • ps -u 以用户的格式显示进程信息
  • ps -x 显示后台进程运行的参数
[root@localhost home]# ps -aux | more

进程列表字段说明

ps -ef (描述:以全格式显示当前所有进程,查看进程的父进程(PPID))

终止进程 kill 和 killall

kill [选项] 进程号    (描述:通过进程号杀死进程)
killall 进程名称 (描述:通过进程名称杀死进程,也支持通配符)

端口及进程管理

开放和关闭端口

  • 开放端口 firewall-cmd --zone=public --add-port=9300/tcp --permanent
  • 关闭端口 firewall-cmd --zone=public --remove-port=9300/tcp --permanent

查看监听的端口

netstat -lnpt

检查端口被某个进程占用

netstat -lnpt | grep 9300

服务管理

服务本质就是进程,但是运行在后台,通常都会监听某个端口,等待其他程序的请求,因此又称为守护进程

服务管理指令

service 服务名 start | stop | restart | reload | status
systemctl

防火墙相关命令

  • 查看防火墙所有开放端口 firewall-cmd --zone=public --list-ports
  • 查看防火墙状态 firewall-cmd --state
  • 关闭防火墙 systemctl stop firewalld.service
  • 重启防火墙 firewall-cmd --reload

服务管理

查询服务名
  • 方式1: 使用setup =》 系统服务,就可以看到
  • 方式2:/etc/init.d/服务名称
[root@localhost init.d]# ls -l /etc/init.d/
总用量 40
-rw-r--r--. 1 root root 18281 3月  29 2019 functions
-rwxr-xr-x. 1 root root  4569 3月  29 2019 netconsole
-rwxr-xr-x. 1 root root  7923 3月  29 2019 network
-rw-r--r--. 1 root root  1160 8月   8 2019 README
服务的运行级别

在这里插入图片描述
查看系统服务

systemctl list-unit-files

动态监控进程

top与ps命令相似,都是用来显示正在执行的进程,但是不同之处,top在执行一段时间可以更新正在运行的进程

top [选项]
查看系统网络状态
netstat [选项]
  • -an 按照一定顺序排列输出
  • -p 显示那个进程在调用

RPM和YUM包

RPM包

RPM(RedHat软件包管理工具)

查询已安装的rpm包

rpm -qa | grep xxx
# 查询安装软件的信息
rpm -qi docker-client

# 查询软件安装了那些文件
rpm -ql docker-client

# 查询文件属于某个rpm包
rpm -qf /etc/passwd

# 卸载rpm包
rpm -e docker-client

# 安装rpm包
rpm ivh 包路径名称
i表示安装 v表示提示 h显示进度条

YUM包

YUM包是基于rpm包管理, YUM能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,可以一次性安装所有依赖的软件包

# 安装包
yum install 包名

# 获取安装包列表
yum list

网络管理及配置

IP管理

  • 查看本机IP地址
    ip addr

系统基础配置

主机名称修改及查看

  • 查看当前主机名称
    hostnamectl
  • 编辑主机名配置文件(静态的主机名称)
    vim /etc/hostname
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值