二进制程序文件 、库文件、 配置文件、 帮助文件
一般而言:
二进制 、库文件 : 都是可执行文件(其中库文件不能独立执行,只能被调 用时执行)
配置文件、 帮助文件: 可被查看内容的文件
多数系统自带的程序文件都放在 : /bin , /sbin , /usr/bin ,/usr/sbin , /usr/local/bin , /usr/local/sbin 下
普通命令 : /bin , /usr/bin , /usr/local/bin
管理命令 : /sbin , /usr/sbin, /usr/local/sbin
共享库: /lib , /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
32bits的库: /lib , /usr/lib , /usr/local/lib
64bits的库 :/lib64 , /usr/lib64 , /usr/local/lib64
注意: 并非所有命令都有一个在某个目录与之对应的可执行程序文件
命令可分为两类:
由shell程序自带的命令 : 内置命令
独立的可执行程序文件,文件名即是命令名 : 外部命令
shell程序是独特的程序,负责解析用户提供的命令(由环境变量来决定):
环境变量:
PATH: 从哪些路径来查找用户键入的命令字符串所对应的命令文件:
echo $PATH(查找次序从左到右)
查看命令类型:
type COMMAND
获取命令的使用帮助:
1.内部命令: help COMMAND
外部命令:
1.命令自带简要格式的使用帮助
COMMAND --help
2.使用手册:manual
位置: /usr/share/man
man COMMAND
SECTION:
NAME : 功能性说明
SYNOPSIS : 语法格式
DESCRIPTION : 描述
OPTIONS : 选项
EXAMPLES : 使用示例
AUTHOR : 作者
BUGS : 报告程序bug的方式
SEE ALSO : 参考
…
SYNOPSIS 中 :
[ ] : 可选内容
<> : 必须提供的内容
a|b|c : 多选一
2.man命令打开手册以后的操作方法:
翻屏:
空格键:向文件尾部翻屏;
b键: 向文件首部翻一屏;
回车键:向文件尾部翻一行;
k键:向文件首部翻一行;
G键:跳转至最后一行;
?G:跳转至第几行; eg: 2G 跳到第二行
文本搜索:
/ keyword : 不区分大小写,从文件首部到尾部一次查找
?keyword: 从尾部向首部查找
n : 与查找命令方向相同;
N:与查找命令方向相反;
3.info COMMAND : 获取命令的在线文档
4.很多应用程序会自带帮助文档: /usr/share/doc/APP-VERSION
README : 程序的相关信息
INSTALL : 程序的安装文档
CHANGES : 版本迭代时的改动信息
5.主流发行版官方文档
6.程序官方文档:官方站点的"Document"
7.搜索引擎
Google
keyword filetype:pdf 搜出来的就是PDF的了
keyword site:domain.tld 按照站点搜索
…
1.回到上次的目录 : “cd -”
2.调用上一条命令的最后一个参数:
1 . “ESC .” ,不用同时按
2 . 字符串: “!$”
这个可以在前面目录比较长,输入命令错了的时候用
3.在文本里查找关键字:
/ keyword : 不区分大小写,从文件首部到尾部一次查找
?keyword: 从尾部向首部查找
n : 与查找命令方向相同;
N:与查找命令方向相反;
4 . Ctrl+a : 跳转至输入的命令行首
Ctrl+e : 跳转至输入的命令行尾
Ctrl+l : 清屏 ,相当于clear
centos7 :
关机 : systemctl poweroff
重启 : systemctl reboot
—或者直接 poweroff / reboot
1 . ls -l : --long,长格式列表 ,即显示文件详细信息:
此时文件大小为 “字节"
-h : --human-readable : 对文件大小进行换算,换算后的结果可能非精确值
2 . echo -n :不进行换行
-e: 让转义符生效
\n :换行
\t: 制表符
单引号:强引用,变量引用不执行替换,输出的和输入的一样
双引号:弱引用,变量引用会被替换
注意:变量引用的正则符号是 ${name}, 只是一般都没加大括号。
3 . 获取当前可用别名的定义: alias
定义别名 : alias name=‘COMMAND’ ------只对当前shell有效
撤销别名 : unalias name
4 . whereis [options] name
-b: 仅搜索二进制程序路径
-m: 仅搜索使用手册文件路径
5 . mkdir -p /usr/local/java
-p : 如果父目录不存在,自动创建父目录
-v : verbose ,显示详细过程
-m : MODE 直接给定权限
6 . stat file:显示文件的很多基础信息
access time 最后访问时间
modify time 最后修改时间(修改里面的内容,ls -l显示的这个时间)
change time 最后改动时间(更改文件属性,如chmod)
[root@weige ~]# stat songwei.sh
File: ‘songwei.sh’
Size: 71 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 67435863 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2018-10-05 13:06:01.504001124 +0800
Modify: 2018-09-24 11:09:30.739633485 +0800
Change: 2018-09-24 11:22:26.157700543 +0800
7 . cp命令 : 源文件 目标文件
单源复制:
如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中
如果DEST存在:
若DEST是非目录文件,则覆盖掉目标文件
若DEST是目录,则会自动创建此文件,并复制源文件
多源复制:
如果DEST不存在: 错误
如果DEST存在:
如果DEST是非目录文件:错误
如果DEST是目录:则分别复制每个文件到目标目录
[root@weige home]# cp /etc/{fstab,issue} ./123/ (两个一起复制)
常用选项:
-i :交互式复制,即覆盖之前提醒用户确认
-f :强制覆盖目标文件
-r/R : 递归复制目录
-d : 复制符号链接文件本身,而非其指向的源文件
-a : -dR --preserve=all ,archive, 用于实现归档
--preserve=
mode : 权限
ownership : 属主和属组
timestamps : 时间戳
context : 安全标签
xattr : 扩展属性
links : 符号链接
all : 上述所有属性
8 . rm 命令:
危险动作:rm -rf /*
注意:生产环境中,所有不用的文件建议不要直接删除,而是移动至某个专用目录(模拟回收站)
9 . 输出重定向
标准覆盖输出重定向 “>”
标准追加输出重定向 “>>”
错误覆盖输出重定向 “2>”
错误追加输出重定向 “2>>”
合并正常输出和错误输出
(1) &> 、&>>
(2)COMMAND > /path/to/somefile 2>&1
COMMAND >> /path/to/somefile 2>&1
10 . su命令 :switch user
登录式切换: 会通过读取目标用户的配置文件来重新初始化,切换过去后 就到了目标用户的家目录了。
su - username 或 su -l username
非登录式切换:不会读取目标用户的配置文件进行初始化
su username
/bin : 所有用户可用的基本命令程序文件
/sbin: 供系统管理使用的工具程序
/boot: 引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等
/dev: 存储特殊文件或设备文件
设备有两种类型:字符设备(线性设备)、块设备(随机设备)
/etc: 系统程序的配置文件,只能为静态,不能为二进制程序
/home: 普通用户家目录的位置,一般每个普通用户的家目录为/home/username
/lib: 为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
/lib64: 64位系统特有的存放64位共享库的路径
/media: 便携式设备挂载点,cdrom, floppy等
/mnt: 其他文件系统的临时挂载点
/opt: 附加应用程序(第三方应用)的安装位置:可选路径
/root: 管理员的家目录
/srv: 当前主机为服务提供的数据
/tmp: 为那些会产生临时文件的程序提供的存储目录,temporary files的简写
/usr: 全局共享的只读数据路径:
bin, sbin
lib, lib64
include: C程序头文件
share: 命令手册页和自带文档等架构特有的文件的存储位置
local: 另一层级目录
X11R6: X-window程序的安装位置
src: 程序源码文件的存储位置
/usr/local: 让系统管理员安装本地应用程序,也通常用来安装第三方程序
/var: 存储常发生变化的数据的目录
/proc: 虚拟文件系统,用于为内核及进程存储其相关信息,它们多为内核参数,例如net.ipv4.ip_forward ,虚拟为net/ipv4/ip_forward,存储于/proc/sys,因此其完整路径为/proc/sys/net/ipv4/ip_forward
/sys: sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径,主要作用在于为管理Linux设备提供一种统一模型的接口
centos 7 :
临时关闭防火墙: systemctl stop firewalld.service
永久关闭防火墙: systemctl disable firewalld.service
centos 6:
临时关闭防火墙: service iptables stop
设置防火墙开机不启动:chkconfig iptables off
Linux开机启动时,有先后顺序,内核模块启动初始化后,会先根据启动级别到 /etc/rc.d/rcX.d 中确定,需要启动哪些程序,然后到 /etc/rc.local/init.d 中找到对应的启动脚本,执行;
所以对应的设置程序开机自启动一般有两种方法:
把服务启动脚本放在init.d里,通过 /etc/rc.d/rcN.d/里对应的开机启动项链接过去,
然后使用
chkconfig --add servicename 添加开机服务
chkconfig --level 35 servicename on 添加启动级别
chkcoinfig --level 35 servicename off 关闭开机启动
对应的run-level脚本启动后,再执行 /etc/rc.d/rc.local, 在里面直接再最后面添加需要执行程序的 路径 就行,同时需要注意,确保 /etc/rc.d/rc.local具备可执行权限 ,其中就/etc/rc.local/具备可执行权限是不行的 , 这只是个软链接
crontab -l -----查看现有定时任务
crontab -e -----设置定时任务
https://blog.csdn.net/czlan91/article/details/72465730
a.超级管理员
b.普通用户
系统用户
登录用户
用户标识:UserID (UID)
通常使用16bits二进制数字表示(0-65535)
a.超级管理员的用户标识:0
b.普通用户:1-65535
系统用户:1-499(Centos6)、1-999(Centos7)
登录用户:500-60000(Centos6)、1000-60000(Centos7)
系统用户:Linux中为了能让后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登录系统。
linux通过名称解析库“/etc/passwd”文件解析用户名与用户ID之间的对应关系。
/etc/passwd:用户信息库
name:password:UID:GID:GECOS:directory:shell
name : 用户名
password :可以使加密的密码,也可以是占位符x;
UID : 用户标识
GID :用户所属主组的ID号
GECOS :注释信息
directory : 用户的家目录
shell : 用户的默认shell , 登录时默认shell程序
在Linux中,用户组分类方式有三种:
a. 管理员组、普通用户组(系统用户组,登录用户组)
b. 用户的基本组(主组)、用户附加组
c. 私有组(组名同用户名,且只有一个用户)、公共组
用户组标识:group id (GID)
a. 管理员的用户组标识:0
b. 普通用户组:1-65535
系统用户组:1-499(Centos6)、1-999(Centos7)
登录用户组:500-60000(Centos6)、1000-60000(Centos7)
linux通过名称解析库“/etc/group”文件解析组名与组ID之间的对应关系。
/etc/group:组的信息库
group_name:passwd:GID:user_list
user_list:该组用户的成员;以此组为附加组的用户的用户列表
通过比对 /etc/shadow 事先存储的,看与登录时提供的信息是否一致
(/etc/gshadow 组密码)
加密算法:
对称加密:加密和解密使用同一个密码
非对称加密:加密和解密使用一对秘钥
公钥:public key
私钥 : private key
单向加密:只能加密,不能解密:提取数据特征码
定长输出:不论密码多大多复杂,提取出来的密码大小一样
雪崩效应:密码中某一个字符改变,那么整个加密后的密钥都会改变
/etc/shadow:用户密码
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:非活动期限:过期期限:保留字段
加密的密码:使用$分隔,第一个段表示使用的加密算法,第二个段表示 添加的salt。第三段表示加密后的密码.
useradd [选项] testuser ---------创建testuser用户
-u UID :指定UID,如果不指定则默认上一个UID+1
-g :指定基本组ID,此组要事先存在,否则默认生成跟自己同名的组
-G :指明用户所属的附加组,多个组之间用逗号隔开
-c :指明注释信息
-d :指定用户的家目录(通过复制/etc/skel目录并重命名实现,指定的家目录如果实现存在,则不会为用户复制环境配置文件)
-s :指定用户的默认shell, 可用的所有shell列表在/etc/shells文件中
-r 或 --system:创建系统用户
useradd -g groupname usernamee --------将用户添加进组
useradd -D:显示创建用户的默认选项配置;
useradd -D 选项:修改默认选项的值;
修改的结果保存于/etc/default/useradd文件中;可以直接修改此文件来实现。
注意:创建用户时的诸多默认设定配置文件为/etc/login.defs
passwd testuser ---------修改testuser用户密码
userdel testuser ---------删除testuser用户
-r : 删除用户时一并删除其家目录
groupadd testgroup --------创建testgroup组
-g GID:指定GID,如果不指定默认是上一个组的GID+1
-r :创建系统组
eg : groupadd -r -g 567 testgroup
groupmod testgroup -------修改组属性
-g GID : 修改GID
-n new_name : 修改祖名
groupdel testgroup ---------删除testgroup组
groups username ---------查看用户所在的组
编辑 /etc/sudoers ,找到下面一行,在root下面添加一行,如下所示:
chmod u+w /etc/sudoers
echo “gc-user ALL=(ALL) NOPASSWD: ALL” >> /etc/sudoers
chmod u-w /etc/sudoers
vim /etc/login.defs
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
找到这个,其中PASS_MAX_DAYS 99999就是永久有效啦
chage -l username -------查看密码状态
chage -M 99999 username ---------设置成永久有效
但是这个方法在公司使用不了,不知道问什么
对于已经添加的账户, 如果使用chage修改不了,可以直接修改 /etc/shadow 文件,其中已分号隔开,将第四列改为 0 , 第五列改为99999 ,强制保存 wq! ,并退出.
fdisk -l ------查看现在磁盘信息,可以看到有没有被挂载上
df -h -------看现有的分区
mount -----挂载各种文件系统
file -------判断文件类型
parted ------适合与MBR、GPT两种模式的分区命令
fdisk ----用于磁盘分区,是Linux的磁盘分区表操作工具
mkfs -----磁盘格式化
fsck ------fsck用来检查和维护不一致的文件系统
fdisk /dev/sdb
工作中把一个磁盘分一个区,所以前面两步是直接回车的,然后,依次输入 n 创建分区 —> p 查看分区 —> w保存
参数说明:
Command (m for help): m
Command action
a toggle a bootable flag #设定可启动标记
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition #删除一个分区
l list known partition types #各分区类型所对应的ID
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 #保存退出
********还有个要划分逻辑卷、物理卷、卷组的,忘了,先记下来,要研究
mkfs.ext3 /dev/sda1 将磁盘格式化为ext3类型
mount /dev/sda1 /somename
df -h 查看是否挂载成功
vim /etc/fstab —在最后一行添加如下
/dev/sdc1(磁盘分区) /disk/disktwo(挂载目录) ext3(文件格式)defaults 0 0
由于传统的磁盘管理不能对磁盘进行磁盘管理,因此诞生了LVM技术,LVM技术最大的特点就是对磁盘进行动态管理。由于LVM的逻辑卷的大小更改可以进行动态调整,且不会出现丢失数据的情况。
LVM(Logic Volume Manager)是逻辑卷管理的简称。它是Linux环境下对磁盘分区管理的一种机制。对于其他的的UNIX(AIX/HP/SUM)操作系统,以及Windows系统也有类似的磁盘管理软件。LVM管理的方式非常简单,就是通过将底层的物料磁盘抽象并封装起来,然后以逻辑的方式呈现给上层应用。
逻辑卷管理的3个概念:
PV(physical volume) 物料卷
VG (Volume Group) 卷组
LG (Logical volume)逻辑卷
【过程】
(1)挂载物理磁盘;
(2)将物理磁盘初始化为物理卷PV;
(3)将一个或多个物理卷PV转变为一个卷组VG。
(4)从VG中创建逻辑卷。
(5)根据实际需要将逻辑卷挂载使用。
(6)根据需要对磁盘or逻辑卷进行扩展和缩减。
PE(Physical Extend) 物理扩展
其实格式化物理卷的过程就是LVM将底层的磁盘划分为一个一个PE的过程,PE默认大小为4M,可以说是LVM管理的基本单位。
命令 | 说明 |
---|---|
pvcreate | pvcreate 设备全路径名,物理卷的创建 |
pvmove | 物理卷的删除 |
vgscan | 检测系统中所有磁盘 |
vgck | vgck [卷组名]检测卷组中卷组描述区域信息的一致性。 |
vgdisplay | vgdisplay [卷组名] 显示卷组的属性信息 |
vgrename | vgrename 原卷组名 新卷组名 |
vgchange | #vgchange -a y|n [卷组名] //改变卷组的相应属性,是否可分配**#vgchange -l** 最大逻辑卷数 //卷组可容纳最大逻辑卷数**#vgchange -x y|n** [卷组名] //卷是否有效 |
vgexport | 卷组的输入 |
vgimport | 卷组的输出 |
pvs | #显示PV的显示信息 |
vgcfgbackup | vgcfgbackup [卷组名] //把卷组中VGDA信息备份到"/etc/vmconf"目录中的文件 |
vgcfgrestore | vgcfgrestore -n [卷组名] 物理卷全路径名 //从备份文件中得到指定物理卷的信息 |
vgcreate | 卷组创建 |
vgmove | 卷组删除 |
vgextend | 卷组扩展 |
vgreduce | 卷组缩小 |
vgmerge | 卷组合并 |
vgsplit | 卷组拆分 |
vgs | 显示VG简要信息 |
lvcreate | 逻辑卷创建 |
lvremove | 逻辑卷删除 |
lvextend | 逻辑卷扩展 |
lvreduce | 逻辑卷缩小 |
lvmdiskscan | 检查所有的SCSI,IDE等存储设备 |
lvscan | 检测逻辑卷的状态 |
lvdisplay | 显示LV属性信息 |
lvchange | 修改LV属性信息,-ay:标记LV为可用状态, -an:标记lv为不可用状态 |
lvs | 显示LV 简要信息 |
LVM磁盘管理最常用的案例
01、创建PV、创建VG、创建LV
02、格式化LV并挂载文件系统使用
03、在线扩容,缩小文件系统
04、删除LV、删除VG、删除PV
05、使用总监
LVM添加顺序:PV–>VG–>LV
LVM删除顺序:LV–>VG–>PV
逻辑卷可在线扩展,但必须离线缩减,缩减很危险,缩减前进行备份。
扩展逻辑卷后文件系统也要扩容
缩减逻辑卷前要先缩减文件系统
Linux系统启动时从硬件读取日期和时间信息,读取完后就不再与硬件相关联
date : 系统时钟
hwclock/clock: 硬件时钟
-s , --hctosys : 以硬件时间为准,把系统时间调整为和硬件时间一样
-w, --systohc : 以系统时间为准,把硬件时间调整为与系统时间一样