Linux 系统管理命令
命令 | 说明 |
---|---|
stat | 显示指定文件的相关信息,比ls命令显示内容更多 |
who | 显示在线登录用户 |
hostname | 显示主机名称 |
uname | 显示系统信息 |
top | 显示当前系统中耗费资源最多的进程 |
ps | 显示瞬间的进程状态 |
du | 显示指定的文件(目录)已使用的磁盘空间的总量 |
df | 显示文件系统磁盘空间的使用情况 |
free | 显示当前内存和交换空间的使用情况 |
ifconfig | 显示网络接口信息 |
ping | 测试网络的连通性 |
netstat | 显示网络状态信息 |
clear | 清屏 |
kill | 杀死一个进程 |
Linux 开关机命令
shutdown 命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。
命令 | 语法 | 参数 | 参数说明 |
---|---|---|---|
shutdown | shutdown [-t seconds] [-rkhncfF] time [message] | ||
-t seconds | 设定在几秒钟之后进行关机程序 | ||
-k | 并不会真的关机,只是将警告讯息传送给所有只用者 | ||
-r | 关机后重新开机(重启) | ||
-h | 关机后停机 | ||
-n | 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机 | ||
-c | 取消目前已经进行中的关机动作 | ||
-f | 关机时,不做 fcsk 动作(检查 Linux 档系统) | ||
-F | 关机时,强迫进行 fsck 动作 | ||
time | 设定关机的时间 | ||
message | 传送给所有使用者的警告讯息 |
重启
- reboot
- shutdown -r now
关机
- shutdown -h now
Linux 压缩命令
tar
命令 | 语法 | 参数 | 参数说明 |
---|---|---|---|
tar | tar [-cxzjvf] 压缩打包文档的名称 欲打包目录 | ||
-c | 建立一个归档文件的参数指令 | ||
-x | 解开一个归档文件的参数指令 | ||
-z | 是否需要用 gzip 压缩 | ||
-j | 是否需要用 bzip2 压缩 | ||
-v | 压缩的过程中显示文件 | ||
-f | 使用档名,在 f 之后要立即接档名 | ||
-tf | 查看归档文件里面的文件 |
例子:
- 压缩文件夹:
tar -zcvf test.tar.gz test\
- 解压文件夹:
tar -zxvf test.tar.gz
gzip
命令 | 语法 | 参数 | 参数说明 |
---|---|---|---|
gzip | gzip [选项] 压缩(解压缩)的文件名 | ||
-d | 解压缩 | ||
-l | 对每个压缩文件,显示压缩文件的大小,未压缩文件的大小,压缩比,未压缩文件的名字 | ||
-v | 对每一个压缩和解压的文件,显示文件名和压缩比 | ||
-num | 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6 |
说明:压缩文件后缀为 gz
bzip2
命令 | 语法 | 参数 | 参数说明 |
---|---|---|---|
bzip2 | bzip2 [-cdz] | ||
-d | 解压缩 | ||
-z | 压缩参数 | ||
-num | 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6 |
说明:压缩文件后缀为 bz2
Linux 编辑器
vim
运行模式
编辑模式:等待编辑命令输入
插入模式:编辑模式下,输入 i
进入插入模式,插入文本信息
命令模式:在编辑模式下,输入 :
进行命令模式
命令
:q
直接退出vi
:wq
保存后退出vi ,并可以新建文件
:q!
强制退出
:w file
将当前内容保存成某个文件
:set number
在编辑文件显示行号
:set nonumber
在编辑文件不显示行号
nano
nano 是一个字符终端的文本编辑器,有点像 DOS 下的 editor 程序。它比 vi/vim 要简单得多,比较适合 Linux 初学者使用。某些 Linux 发行版的默认编辑器就是 nano。
命令
- 保存:ctrl + o
- 搜索:ctrl + w
- 上一页:ctrl + y
- 下一页:ctrl + v
- 退出:ctrl + x
Linux 软件包管理
概述
APT(Advanced Packaging Tool) 是 Debian/Ubuntu 类 Linux 系统中的软件包管理程序, 使用它可以找到想要的软件包, 而且安装、卸载、更新都很简便;也可以用来对 Ubuntu 进行升级; APT 的源文件为 /etc/apt/
目录下的 sources.list
文件。
修改数据源
由于国内的网络环境问题,我们需要将 Ubuntu 的数据源修改为国内数据源,操作步骤如下:
查看系统版本
lsb_release -a
输出结果为
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04 LTS
Release: 16.04
Codename: xenial
注意: Codename 为 xenial
,该名称为我们 Ubuntu 系统的名称,修改数据源需要用到该名称
编辑数据源
vi /etc/apt/sources.list
删除全部内容并修改为
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
更新数据源
apt-get update
常用 APT 命令
安装软件包
apt-get install packagename
删除软件包
apt-get remove packagename
更新软件包列表
apt-get update
升级有可用更新的系统(慎用)
apt-get upgrade
其它 APT 命令
搜索
apt-cache search package
获取包信息
apt-cache show package
删除包及配置文件
apt-get remove package --purge
了解使用依赖
apt-cache depends package
查看被哪些包依赖
apt-cache rdepends package
安装相关的编译环境
apt-get build-dep package
下载源代码
apt-get source package
清理无用的包
apt-get clean && apt-get autoclean
检查是否有损坏的依赖
apt-get check
Linux 用户和组管理
概述
Linux 操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。
使用 Root 用户
在实际生产操作中,我们基本上都是使用超级管理员账户操作 Linux 系统,也就是 Root 用户,Linux 系统默认是关闭 Root 账户的,我们需要为 Root 用户设置一个初始密码以方便我们使用。
设置 Root 账户密码
sudo passwd root
切换到 Root
su
设置允许远程登录 Root
nano /etc/ssh/sshd_config
PermitRootLogin yes (默认为#PermitRootLogin prohibit-password)
重启服务
service ssh restart
用户账户说明
普通用户
普通用户在系统上的任务是进行普通操作
超级管理员
管理员在系统上的任务是对普通用户和整个系统进行管理。对系统具有绝对的控制权,能够对系统进行一切操作。用 root 表示,root 用户在系统中拥有最高权限,默认下 Ubuntu 用户的 root 用户是不能登录的。
安装时创建的系统用户
此用户创建时被添加到 admin 组中,在 Ubuntu 中,admin 组中的用户默认是可以使用 sudo
命令来执行只有管理员才能执行的命令的。如果不使用 sudo
就是一个普通用户。
组账户说明
私有组
当创建一个用户时没有指定属于哪个组,Linux 就会建立一个与用户同名的私有组,此私有组只含有该用户。
标准组
当创建一个用户时可以选定一个标准组,如果一个用户同时属于多个组时,登录后所属的组为主组,其他的为附加组。
账户系统文件说明
/etc/passwd
每一行代表一个账号,众多账号是系统正常运行所必须的,例如 bin,nobody 每行定义一个用户账户,此文件对所有用户可读。每行账户包含如下信息:
root:x:0:0:root:/root:/bin/bash
- 用户名: 就是账号,用来对应 UID,root UID 是 0。
- 口令: 密码,早期 UNIX 系统密码存在此字段,由于此文件所有用户都可以读取,密码容易泄露,后来这个字段数据就存放到 /etc/shadow 中,这里只能看到 X。
- 用户标示号(UID): 系统内唯一,root 用户的 UID 为 0,普通用户从 1000 开始,1-999 是系统的标准账户,500-65536 是可登陆账号。
- 组标示号(GID): 与 /etc/group 相关用来规定组名和 GID 相对应。
- 注释: 注释账号
- 宿主目录(主文件夹): 用户登录系统后所进入的目录 root 在 /root/itcast
- 命令解释器(shell): 指定该用户使用的 shell ,默认的是 /bin/bash
/etc/shadow
为了增加系统的安全性,用户口令通常用 shadow passwords 保护。只有 root 可读。每行包含如下信息:
root:$6$Reu571.V$Ci/kd.OTzaSGU.TagZ5KjYx2MLzQv2IkZ24E1.yeTT3Pp4o/yniTjus/rRaJ92Z18MVy6suf1W5uxxurqssel.:17465:0:99999:7:::
- 账号名称: 需要和 /etc/passwd 一致。
-
密码: 经过加密,虽然加密,但不表示不会被破解,该文件默认权限如下:
- -rw------- 1 root root 1560 Oct 26 17:20 passwd-
- 只有root能都读写
- 最近修改密码日期: 从1970-1-1起,到用户最后一次更改口令的天数
- 密码最小时间间隔: 从1970-1-1起,到用户可以更改口令的天数
- 密码最大时间间隔: 从1970-1-1起,必须更改的口令天数
- 密码到期警告时间: 在口令过期之前几天通知
- 密码到期后账号宽限时间
- 密码到期禁用账户时间: 在用户口令过期后到禁用账户的天数
- 保留
/etc/group
用户组的配置文件
root:x:0:
- 用户组名称
- 用户组密码: 给用户组管理员使用,通常不用
- GID: 用户组的ID
- 此用户支持的账号名称: 一个账号可以加入多个用户组,例如想要 itcast 加入 root 这个用户组,将该账号填入该字段即可 root❌0:root, icast 将用户进行分组是 Linux 对用户进行管理及控制访问权限的一种手段。一个中可以有多个用户,一个用户可以同时属于多个组。该文件对所有用户可读。
/etc/gshadow
该文件用户定义用户组口令,组管理员等信息只有root用户可读。
root:\*::
- 用户组名
- 密码列
- 用户组管理员的账号
- 用户组所属账号
账户管理常用命令
增加用户
useradd 用户名
useradd -u (UID号)
useradd -p (口令)
useradd -g (分组)
useradd -s (SHELL)
useradd -d (用户目录)
如:useradd lusifer
增加用户名为 lusifer 的账户
修改用户
usermod -u (新UID)
usermod -d (用户目录)
usermod -g (组名)
usermod -s (SHELL)
usermod -p (新口令)
usermod -l (新登录名)
usermod -L (锁定用户账号密码)
usermod -U (解锁用户账号)
如:usermod -u 1024 -g group2 -G root lusifer
将 lusifer 用户 uid 修改为 1024,默认组改为系统中已经存在的 group2,并且加入到系统管理员组
删除用户
userdel 用户名 (删除用户账号)
userdel -r 删除账号时同时删除目录
如:userdel -r lusifer
删除用户名为 lusifer 的账户并同时删除 lusifer 的用户目录
组账户维护
groupadd 组账户名 (创建新组)
groupadd -g 指定组GID
groupmod -g 更改组的GID
groupmod -n 更改组账户名
groupdel 组账户名 (删除指定组账户)
口令维护
passwd 用户账户名 (设置用户口令)
passwd -l 用户账户名 (锁定用户账户)
passwd -u 用户账户名 (解锁用户账户)
passwd -d 用户账户名 (删除账户口令)
gpasswd -a 用户账户名 组账户名 (将指定用户添加到指定组)
gpasswd -d 用户账户名 组账户名 (将用户从指定组中删除)
gpasswd -A 用户账户名 组账户名 (将用户指定为组的管理员)
用户和组状态
su 用户名(切换用户账户)
id 用户名(显示用户的UID,GID)
whoami (显示当前用户名称)
groups (显示用户所属组)
Linux 文件权限管理
查看文件和目录的权限
ls –al使用 ls 不带参数只显示文件名称,通过
ls –al` 可以显示文件或者目录的权限信息。
ls -l 文件名
显示信息包括:文件类型 (d
目录,-
普通文件,l
链接文件),文件权限,文件的用户,文件的所属组,文件的大小,文件的创建时间,文件的名称
-rw-r--r-- 1 lusifer lusifer 675 Oct 26 17:20 .profile
-
-
:普通文件 -
rw-
:说明用户 lusifer 有读写权限,没有运行权限 -
r--
:表示用户组 lusifer 只有读权限,没有写和运行的权限 -
r--
:其他用户只有读权限,没有写权限和运行的权限
-rw-r--r-- | 1 | lusifer | lusifer | 675 | Oct 26 17:20 | .profile |
---|---|---|---|---|---|---|
文档类型及权限 | 连接数 | 文档所属用户 | 文档所属组 | 文档大小 | 文档最后被修改日期 | 文档名称 |
- | rw- | r-- | r-- |
---|---|---|---|
文档类型 | 文档所有者权限(user) | 文档所属用户组权限(group) | 其他用户权限(other) |
文档类型
-
d
表示目录 -
l
表示软连接 -
–
表示文件 -
c
表示串行端口字符设备文件 -
b
表示可供存储的块设备文件 - 余下的字符 3 个字符为一组。
r
只读,w
可写,x
可执行,-
表示无此权限
连接数
指有多少个文件指向同一个索引节点。
文档所属用户和所属组
就是文档属于哪个用户和用户组。文件所属用户和组是可以更改的
文档大小
默认是 bytes
更改操作权限
chown
是 change owner 的意思,主要作用就是改变文件或者目录所有者,所有者包含用户和用户组
chown [-R] 用户名称 文件或者目录
chown [-R] 用户名称 用户组名称 文件或目录
-R:进行递归式的权限更改,将目录下的所有文件、子目录更新为指定用户组权限
chmod
改变访问权限
chmod [who] [+ | - | =] [mode] 文件名
who
表示操作对象可以是以下字母的一个或者组合
- u:用户 user
- g:用户组 group
- o:表示其他用户
- a:表示所有用户是系统默认的
操作符号
- +:表示添加某个权限
- -:表示取消某个权限
- =:赋予给定的权限,取消文档以前的所有权限
mode
表示可执行的权限,可以是 r、w、x
文件名
文件名可以使空格分开的文件列表
示例
lusifer@UbuntuBase:~$ ls -al test.txt
-rw-rw-r-- 1 lusifer lusifer 6 Nov 2 21:47 test.txt
lusifer@UbuntuBase:~$ chmod u=rwx,g+r,o+r test.txt
lusifer@UbuntuBase:~$ ls -al test.txt
-rwxrw-r-- 1 lusifer lusifer 6 Nov 2 21:47 test.txt
lusifer@UbuntuBase:~$
数字设定法
数字设定法中数字表示的含义
- 0 表示没有任何权限
- 1 表示有可执行权限 =
x
- 2 表示有可写权限 =
w
- 4 表示有可读权限 =
r
也可以用数字来表示权限如 chmod 755 file_name
r w x | r – x | r - x |
---|---|---|
4 2 1 | 4 - 1 | 4 - 1 |
user | group | others |
若要 rwx 属性则 4+2+1=7
若要 rw- 属性则 4+2=6
若要 r-x 属性则 4+1=5
lusifer@UbuntuBase:~$ chmod 777 test.txt
lusifer@UbuntuBase:~$ ls -al test.txt
-rwxrwxrwx 1 lusifer lusifer 6 Nov 2 21:47 test.txt
lusifer@UbuntuBase:~$ chmod 770 test.txt
lusifer@UbuntuBase:~$ ls -al test.txt
-rwxrwx--- 1 lusifer lusifer 6 Nov 2 21:47 test.txt
附:Linux LVM 磁盘扩容
LVM 的基本概念
物理卷 Physical volume (PV)
可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的 header,其余部分被切割为一块块物理区域(physical extents)。
卷组 Volume group (VG)
将一组物理卷收集为一个管理单元。
逻辑卷 Logical volume (LV)
虚拟分区,由物理区域(physical extents)组成。
物理区域 Physical extent (PE)
硬盘可供指派给逻辑卷的最小单位(通常为 4MB)。
磁盘操作相关命令
df -h
(查看挂载点)
lvdisplay
(显示当前的 logical volume)
备注: 注意这里目前有两个,一个是文件系统所在的 volume
,另一个是 swap
分区使用的 volume
,当然,我们需要扩容的是第一个
vgdisplay
(显示当前的 volume group)
备注: 注意 VG SIZE
,这里应该是你当前的可用空间大小,待扩容完毕,这里显示的应该是最终的大小
pvdisplay
(显示当前的 physical volume)
开始 LVM 扩容
查看 fdisk
fdisk -l
因为这台机器默认开启了 LVM,所以目前有一个 extended
分区和一个 LVM
分区,并且他们是完全重叠的。这是因为,LVM 分区作为一个虚拟的分区,完全占用了这个 extended 分区,原理图见下:
因此,现在需要做的就是将 extended partition (sda2
) 扩展到最大,然后创建一个新的 LVM logical partition (sda6
),用它来填满 sda2
查看所有连接到电脑上的储存设备
fdisk -l |grep '/dev'
1 块磁盘效果图
2 块磁盘效果图(新增磁盘,尚未挂载)
创建 sdb
分区
fdisk /dev/sdb
n # 新建分区
l # 选择逻辑分区,如果没有,则首先创建扩展分区(p),然后再添加逻辑分区(硬盘:最多四个分区 P-P-P-P 或 P-P-P-E)
回车
回车
回车
w # 写入磁盘分区
格式化磁盘
mkfs -t ext4 /dev/sdb1
创建 PV
pvcreate /dev/sdb1
查看卷组
pvscan
1
扩容 VG
vgdisplay
vgextend ubuntu-vg /dev/sdb1
扩容 LV
lvextend -L +30G /dev/ubuntu-vg/root
刷新分区
resize2fs /dev/ubuntu-vg/root
删除 unknown device
pvscan
vgreduce --removemissing ubuntu-vg
注意:不要卸载扩容的磁盘,可能出现丢失数据或是系统无法启动