文章目录
linux基础
随手记录
配置SSH公钥
ssh-keygen -t rsa 会让你输入东西,不用输入,一直按回车,直到出现新的输入时等于公钥生成
复制虚拟机公钥到主机
ssh-copy-id ~/.ssh/id_rsa.pub root@master(我的主机名为master,@后为自己修改的主机名)
此步需要输入一个yes和root用户的密码。
查看是否有定时任务:
crontab -l
yum源定义文件存放位置:
/etc/yum.repos.d
将光驱挂载到/mnt/cdrom中:
mount /dev/cdrom /mnt/cdrom
查看系统的默认运行级别:
systemctl get-default
列出系统中所有可用的yum源:
yum repolist
测试当前用户是否对/etc/passwd文件具有读写权限,如果是则显示"yes":
[ -w(r) /etc/passwd ] && echo "yes"
从/etc/passwd文件中找出所有以"nologin"结尾的行,并写入到/root/nologin.txt问价中:
grep "nologin$" /etc/passwd > /aa.txt
测试当前系统中登录的用户数量:
who
判断当前系统中登录的用户数量是否小于10(小于输出yes,否输出no):
[ $(who | wc -l) -le 10 ] && echo "yes" || echo "no"
将/var/ftp目录打包压缩为/root/var.tar.gz:
tar -zvcf /root/var.tar.gz /var/ftp
编写一个shell脚本,脚本执行后会输出提示信息"Localtino:",提示用户输入一个文件路径,然后判断用户输入的路径是否是"etc/inittab",如果是则输出"yes".
#!/bin/bash
read -p "Location:" path
[ $path == /etc/inittab ] && echo "yes"
远程拷贝(将127.22的文件拷贝到当前目录):
scp root@192.168.127.22:/root/anaconda-ks.cfg ./
遗忘的命令(Centos6、7 不同)
1.centos6 7的网卡重启方式 #centos6 重启网卡 service net work restart #重启网卡 #centos7 重启网卡 systemctl restart network 2.DNS配置文件: cat /etc/resolv.conf 设置主机和ip绑定信息: cat /etc/hosts 设置主机名: cat /etc/hostname 3.关闭防火墙并重新设置开机不启动(Centos7) 查看防火墙状态: systemctl status firewalld.service 关闭: systemctl stop firewalld 开启: systemctl start firewalld 开机自关闭: systemctl disable firewalld 开机自启动: systemctl enable firewalld 查看开机是否启动: chkconfig --list | grep network
安装系统分区
共三个分区:
boot:引导分区(1G) 设备类型:标准分区 文件系统:ext4
swp: 交换分区(2G) 设备类型:标准分区 文件系统:swap
/: 根分区 (All) 设备类型:标准分区 文件系统:ext4
三种网络模式
- 桥接模式:虚拟系统可以和外部系统相互通讯,但是每个主机都会占用一个ip,最大容量255个,会造成ip冲突。
- NAT模式:网络地址转换模式,虚拟系统可以和外部系统通讯,外部系统无法访问虚拟系统,单方向的,不会造成ip冲突问题。
- 主机模式:单独的一个系统。
具体的目录结构
/bin:【常用】Binary 的缩写,存放经常使用的命令
/sbin:Super User的意思,存放系统管理员使用的系统管理程序
/home:【常用】存放普通用户的主目录
/root:【常用】系统管理员的主目录
/lib:系统开机所需要最基本的动态链接共享库,类似于Windows的DLL文件,几乎所有应用程序都需要用到这些共享库
/lost+found:这个目录一般情况下为空,当系统非法关机之后,这里就会存放一些文件
/etc:【常用】常用的系统管理所需要的配置文件和子目录,比如安装mysql数据库,my.conf
/usr:【常用】这是非常重要的目录,用户很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录
/boot:【常用】存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件
/proc:【不能动】这个目录是一个虚拟目录,是系统内存的映射,访问这个目录来获取系统信息
/srv:【不能动】service缩写,该目录存放一些服务启动之后需要提取的数据
/sys:【不能动】这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs
/tmp:这个目录用来存放一些临时文件的
/dev:类似于Windows的设备管理器,把所有的硬件用文件的形式存储
/media:【常用】Linux系统会自动识别一些设备,例如:U盘、光驱等等,识别之后,Linux会把识别的设备挂载到这个目录下
/mnt:【常用】系统提供该目录是为了让用户临时挂载别的文件系统的,可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。D:/myshare
/opt:给主机额外安装软件所拜访的目录,如安装ORACLE数据库就可以放在该目录下面,默认为空。
/usr/local:【常用】这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序。
/var:【常用】这个目录存放着不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。
/selinux [security-enhanced linux]:【没有启动看不到】SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置。
🎅:某些目录没有特殊的启动设置看不到
vi和vim常用快捷键
- 拷贝当前行 yy,拷贝当先行向下的5行 5yy,粘贴 p。
- 删除当前行 dd,删除当前行向下的5行 5dd。
- 在文件中查找某个单词 – 命令行下 /关键字,回车查找,输入 n 查找下一个
- 设置文件的行号 命令行下:set nu 和 set nonu
- 编辑 /etc/profile 文件,G 定位在最末行,gg 定位在首行
- 撤销操作 – 一般模式下 u
- 定位指定行:一般模式下命令行:50 回车,直接写数字行 回车
- ctrl+f:屏幕向下移动一页,相当于 page down 按键
- ctrl+b:屏幕向上移动一页,相当于page up 按键
- 0 或者 Home 键:移动到当前行第一个字符
- $ 或者 End 键:移动到这一行最后字符处
关机注意事项
shutdown -h now 立刻进行关机
shutdown -h 1 “hello, 1分钟后会关机了” 其中 单独的 shutdown 执行 就是这句话
shutdown -r now 立刻重启
halt 关机
reboot 重启
sync 把内存的数据同步到磁盘
细节:不管是重启还是关机,首先要运行sync命令,把内存数据写入磁盘防止丢失
目前的 /shutdown/reboot/halt 等命令均已经在关机前进行 sync 建议:手动执行sync 小心驶得万年船!
Centos7查看端口
- 安装netstat工具
yum install net-tools
- 查看服务器所有被占用的端口
netstat -ant
- 验证某个端口是否被占用
netstat -tunlp|grep 123456
- 查看所有监听端口号
netstat -lntp
用户注销(Logout)
logout 指令可以注销用户
使用细节:logout 注销指令在图形运行级别无效,在运行级别3下有效
----否则报错----
[root@hdfs001 lwx]# logout
bash: logout: 不是登录shell: 使用 `exit’
用户管理
1.添加用户
- 基本语法
- useradd 用户名
- 自定义家目录
- 也可以通过 useradd -d 指定目录 新的用户名,即给新建用户指定一个家目录
- 细节说明
- 当创建用户成功后,会自动的创建和用户同名的家目录,实际工程中,不能一样,要自定义。
[root@hdfs001 home]# useradd -d /home/test lsz [root@hdfs001 home]# ls lwx test [root@hdfs001 home]# su lsz [lsz@hdfs001 home]$ cd ~ [lsz@hdfs001 ~]$ pwd /home/test [lsz@hdfs001 ~]$
2.修改用户密码
- 基本语法 (不写用户名默认给当前用户修改)
- passwd 用户名
3.删除用户
- 基本语法
- userdel 用户名 – (删除用户,家目录还在)
- userdel -r 用户名 – (连同家用户目录一同删除)
4.查询用户信息
- 基本语法
- id 用户名
[root@hdfs001 home]# id root uid=0(root) gid=0(root) 组=0(root)
- 查自己
- who am i (可以看到登录时间和登录的ip)
[root@hdfs001 home]# who am i root pts/0 2021-09-27 22:00 (192.168.241.1)
细节:who am i 查询的是第一次登录到系统的用户信息,并不是执行这个命令的用户信息
[lwx@hdfs001 home]$ who am i root pts/0 2021-09-27 22:00 (192.168.241.1)
5.切换用户
- 基本语法
- su 用户名
- 注意细节
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
- 当需要返回到原来用户时,使用exit/logout指令,别su来su去。
- 当之后一个用户登录的时候,使用 logout 会关机
用户组
1.组基本操作
- 介绍
- 类似于角色,系统可以对有共性/权限的多个用户进行统一的管理
- 增加组
- groupadd 组名
- 删除组
- groupdel 组名
- 增加用户时直接加上组 (前提是这个组要提前存在)
- useradd -g 用户组 用户名
[root@hdfs001 home]# groupadd testzu [root@hdfs001 home]# useradd -g testzu lsz [root@hdfs001 home]# su lsz [lsz@hdfs001 home]$ id lsz uid=1001(lsz) gid=1001(testzu) 组=1001(testzu)
- 注意细节
- 如果添加用户没有指定组,那么会自动生成一个与用户名相同的组,将自己放进去,一人一个组。
- 修改用户的组 (权限也会随着改,入乡随俗)
- usermod -g 用户组 用户名
[root@hdfs001 home]# id lsz uid=1001(lsz) gid=1002(testzu2) 组=1002(testzu2) [root@hdfs001 home]# usermod -g testzu lsz [root@hdfs001 home]# id lsz uid=1001(lsz) gid=1001(testzu) 组=1001(testzu)
2.用户和组相关文件
- /etc/passwd 文件
- 用户(user)的配置文件,记录用户的各种信息
- 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
[root@hdfs001 home]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash
Linux分区
1.原理介绍
Linux无论有几个分区,归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分
Linux采用了叫 载入 的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得。
2.硬盘说明
Linux硬盘分 IDE 硬盘 和 SCSI 硬盘,目前基本上是 SCSI 硬盘
对于 IDE 硬盘,驱动器标识符为 “hdx~”, 其中 “hd” 表明分区所在设备的类型,这里是指 IDE 硬盘了
“x” 为盘号(a为基础盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),"~" 代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。
例子:hda3表示为 第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个IDE硬盘上的第二个主分区或扩展分区
对于 SCSI 硬盘则标识为 “sdx~”, SCSI硬盘使用 “sd” 来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法一样。
3.查看所有设备挂载情况
#查看所有设备挂在情况
[root@master ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk #分区情况
├─sda1 8:1 0 1G 0 part /boot #sda1是sda的第一个分区,挂在道 /boot文件目录下
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47G 0 part /
sr0 11:0 1 4.4G 0 rom
#详细信息
[root@master ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 afe6a3bc-1137-4385-9ea8-87e264e151d9 /boot
├─sda2 swap e384eaa5-c79f-4d5f-8be2-24e17524e6e9 [SWAP]
└─sda3 ext4 7ad59111-70fa-4f7d-b227-22955ab24fae /
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
#说明:
UUID:每个分区的一个40位的唯一不重复的标识符
MOUNTPOINT:挂载点
4.挂载经典案例
说明:下面我们以增加一块硬盘为例,熟悉硬盘相关指令,理解分区,挂载,卸载的概念
大致步骤分几步:
虚拟机增加硬盘(通过vm软件,界面化增加一个硬盘)
分区
格式化
挂载
设置可以自动挂载
步骤2:分区
#查看当前电脑硬盘的分区情况 [root@master ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 2G 0 part [SWAP] └─sda3 8:3 0 47G 0 part / sdb 8:16 0 5G 0 disk sr0 11:0 1 4.4G 0 rom #进入分区命令行 开始执行分区操作 [root@master ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0xa1192e43 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):m 命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) 切换可引导标志 b 编辑 bsd 磁盘标签 c 切换 dos 兼容性标志 d 删除一个分区 g 创建一个新的空 GPT 分区表 G 创建一个 IRIX (SGI) 分区表 l 列出已知的分区类型 m 我打印这个菜单 n 添加一个新分区 o 创建一个新的空 DOS 分区表 p 打印分区表 q 退出而不保存更改 s 创建一个新的空 Sun 磁盘标签 t 更改分区的系统 ID u 更改显示/输入单位 v 验证分区表 w 将表写入磁盘并退出 x 额外功能(仅限专家) #增加一个新分区 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended #选择分区类型 p:主分区 e:逻辑分区 Select (default p): p #这里输入几 就是分几个分区 默认 我们就用1吧 分区号 (1-4,默认 1):1 #默认回车 把空间全给这个分区 起始 扇区 (2048-10485759,默认为 2048): 将使用默认值 2048 #继续回车 默认 Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759): 将使用默认值 10485759 分区 1 已设置为 Linux 类型,大小设为 5 GiB #最后 键入w 保存退出 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 #查看 增加分区的硬盘情况 可以看到 sdb下面有一个sdb1分区了 [root@master ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 2G 0 part [SWAP] └─sda3 8:3 0 47G 0 part / sdb 8:16 0 5G 0 disk └─sdb1 8:17 0 5G 0 part sr0 11:0 1 4.4G 0 rom
步骤3:格式化
注意:分区之后 如果不进行格式化和挂载 ,是没办法使用的。
#先查看一下sdb1的类型 这里显示是 ext4 注意:这里sdb1 没有 UUID编号 [root@master ~]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 afe6a3bc-1137-4385-9ea8-87e264e151d9 /boot ├─sda2 swap e384eaa5-c79f-4d5f-8be2-24e17524e6e9 [SWAP] └─sda3 ext4 7ad59111-70fa-4f7d-b227-22955ab24fae / sdb └─sdb1 ext4 sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00 #接下来运行 格式化的命令 [root@master ~]# mkfs -t ext4 /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1310464 blocks 65523 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 #通过查看硬盘分区详细信息可以看到 sdb1 经过格式化之后 产生了 UUID 编号。 [root@master ~]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 afe6a3bc-1137-4385-9ea8-87e264e151d9 /boot ├─sda2 swap e384eaa5-c79f-4d5f-8be2-24e17524e6e9 [SWAP] └─sda3 ext4 7ad59111-70fa-4f7d-b227-22955ab24fae / sdb └─sdb1 ext4 7f45c57f-dcaa-4d20-9527-fff0d0949348 sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
步骤4:挂载
注意:使用命令行挂载重启之后会失效,这里临时挂载
#挂载之前先看一下 sdb1 挂载在哪里 ,这里看到 sdb1 没有挂载点 [root@master ~]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 afe6a3bc-1137-4385-9ea8-87e264e151d9 /boot ├─sda2 swap e384eaa5-c79f-4d5f-8be2-24e17524e6e9 [SWAP] └─sda3 ext4 7ad59111-70fa-4f7d-b227-22955ab24fae / sdb └─sdb1 ext4 7f45c57f-dcaa-4d20-9527-fff0d0949348 sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00 #然后新建一个文件夹 [root@master /]# mkdir newdisk [root@master /]# ls bin data etc lib lost+found mnt opt root sbin sys usr boot dev home lib64 media newdisk proc run srv tmp var #将 sdb1 挂载 到 newdisk 文件夹中 [root@master /]# mount /dev/sdb1 /newdisk/ [root@master /]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 afe6a3bc-1137-4385-9ea8-87e264e151d9 /boot ├─sda2 swap e384eaa5-c79f-4d5f-8be2-24e17524e6e9 [SWAP] └─sda3 ext4 7ad59111-70fa-4f7d-b227-22955ab24fae / sdb └─sdb1 ext4 7f45c57f-dcaa-4d20-9527-fff0d0949348 /newdisk sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00 #进入 /newdisk的文件夹 [root@master /]# cd /newdisk/ #瞄一眼 有啥 [root@master newdisk]# ls lost+found #新建一个文件 [root@master newdisk]# touch my.txt #这里 my.txt 这个文件就创建在 sdb1 这块硬盘上面了 [root@master newdisk]# ls lost+found my.txt
步骤4.2:永久挂载
说明:通过写入文件的方式,实现永久挂载,类似于环境变量
#编辑以下文件 [root@master ~]# vim /etc/fstab #这里已经写入了,我就直接查看了 可以看到 第15行(最后一行),是我写上去的,这样就可以实现永久挂载了 [root@master ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Oct 19 05:53:04 2021 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=7ad59111-70fa-4f7d-b227-22955ab24fae / ext4 defaults 1 1 UUID=afe6a3bc-1137-4385-9ea8-87e264e151d9 /boot ext4 defaults 1 2 UUID=e384eaa5-c79f-4d5f-8be2-24e17524e6e9 swap swap defaults 0 0 /dev/sdb1 /newdisk ext4 defaults 0 0 注意:这里写完,保存退出,重启系统可以生效,也可以运行 mount -a 命令生效 [root@master ~]#mount -a
步骤5:卸载
#卸载 sdb1 挂载 [root@master /]# umount /dev/sdb1 #可以看到 挂载点没了 [root@master /]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 afe6a3bc-1137-4385-9ea8-87e264e151d9 /boot ├─sda2 swap e384eaa5-c79f-4d5f-8be2-24e17524e6e9 [SWAP] └─sda3 ext4 7ad59111-70fa-4f7d-b227-22955ab24fae / sdb └─sdb1 ext4 7f45c57f-dcaa-4d20-9527-fff0d0949348 sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
5. 磁盘及具体文件夹情况查询
查看磁盘使用情况
#查看磁盘使用情况 [root@master ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 895M 0 895M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 11M 900M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/sda3 47G 5.8G 39G 14% / /dev/sdb1 4.8G 20M 4.6G 1% /newdisk /dev/sda1 976M 152M 758M 17% /boot tmpfs 182M 12K 182M 1% /run/user/42 tmpfs 182M 0 182M 0% /run/user/0
查看文件夹及文件使用情况
基本语法:du -h
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度 等于1 就是1层
-c 列出明细的同时,增加汇总值
[root@master ~]# cd /home/hadoop001/ [root@master hadoop001]# ls hadoop-3.1.3 jdk1.8.0_212 公共 模板 视频 图片 文档 下载 音乐 桌面 #查看当前目录使用情况 [root@master hadoop001]# du -h --max-depth=1 ./ 4.0K ./音乐 393M ./jdk1.8.0_212 12K ./.mozilla 4.0K ./模板 4.0K ./文档 4.0K ./图片 4.0K ./视频 4.0K ./桌面 4.0K ./公共 3.9M ./.cache 20K ./.ssh 12K ./.dbus 866M ./hadoop-3.1.3 4.0K ./下载 500K ./.local 164K ./.config 1.3G .