admin管理员组文章数量:1530018
Centos7-Linux-RH
Linux操作系统(百度百科):全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出,它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的[Red Hat Enterprise Linux](https://baike.baidu/item/Red Hat Enterprise Linux/10770503)、SUSE、[oracle linux](https://baike.baidu/item/oracle linux/6876458)等。
一、简述
1.1 什么是CentOS
CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的[Red Hat](https://baike.baidu/item/Red Hat) Enterprise Linux使用。两者的不同,在于CentOS完全开源。
【扩展】CentOS和Ubuntu区别
1.centos中普通用户没有sudo权限,需在sudoers文件中添加用户的权限。
2.ubuntu中普通用户,直接使用sudo+命令行的方式即可。
3.ubuntu(apt/apt-get)与centos (yum) 安装软件包命令的格式不一样。centos是支持rpm包的,ubuntu不支持rpm包。
【Vi编辑器的简单使用】
移动光标, 按i字母, 进入Insert模式,可以按方向键左右上下移动,按Del键删除(向左删除-Mac),Window是backspace 回退键。编完之后,按ESC 取消插入模式, 再按Shift+: 进入命令行模式,输入wq 或 x,最后回车确认退出并保存。
1.2 主流的CentOS版本
1.2.1 CentOS-7
CentOS 7于2014年7月7号正式发布,这是一个企业级的Linux发行版本,基于Red Hat红帽免费公开的源代码。相对于之前版本,升级内容如下:
- 支持新的处理器(Broadwell)及图像卡(AMD hawaii)
- 全面支持 LVM 缓存
- 可挂载 ceph 块设备
- 更新 Hyper-V 网络驱动程序
- 新的 libguestfs 功能
- 全面支持 openJDK-1.8.0
- 改善时钟(PTP 及 NTP)的稳定性
- 更新 Networkmanager 组件至 1.0 版本
- 更新 docker 至 1.4.1
- 更新 openSSh 至 6.6.1
- 新组件:Mozilla Thunderbird
- 更新多个存储、网络及图像卡驱动程序
- 科技预览:支持 Btrfs 文件系统、OverlayFS 及 Cisco VIC 内核驱动程序
1.2.2 CentOS-8
首个8.0版本于2019.09.25发布,最新版本为 CentOS 8.1.1911
相对于 RHEL 7主要改进:
内核更新至3.10.0;支持Linux容器(Docker),Open VMware Tools及3D图像能即装即用,Open JDK7作为缺省JDK,ext4及XFS的LVM快照,转用systemd、firewalld及GRUB2,XFS作为缺省文件系统,内核空间内的iSCSI及FCoE,支持PTPv2,支持40G网卡等。
1.3 Linux的目录结构
[root@localserver ~]# ls / -ll
总用量 16
lrwxrwxrwx. 1 root root 7 6月 8 10:22 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 6月 8 10:30 boot
drwxr-xr-x. 21 root root 3280 6月 8 10:29 dev
drwxr-xr-x. 74 root root 8192 6月 8 10:32 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 home
lrwxrwxrwx. 1 root root 7 6月 8 10:22 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 6月 8 10:22 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 2 root root 6 4月 11 2018 opt
dr-xr-xr-x. 120 root root 0 6月 8 10:29 proc
dr-xr-x---. 2 root root 135 6月 8 10:36 root
drwxr-xr-x. 24 root root 720 6月 8 10:36 run
lrwxrwxrwx. 1 root root 8 6月 8 10:22 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 6月 8 10:29 sys
drwxrwxrwt. 7 root root 132 6月 8 10:32 tmp
drwxr-xr-x. 13 root root 155 6月 8 10:22 usr
drwxr-xr-x. 19 root root 267 6月 8 10:29 var
- / 根目录
- /bin 基础系统所需要的命令位于此目录,是最小系统所需要的命令,如:ls, cp, cd等等。这个目录中的文件都是可执行的,一般的用户都可以使用。
- /dev 设备文件,比如声卡、磁盘、鼠标、键盘等。
- /etc 系统管理和配置文件
- /etc/init.d 启动配置文件和脚本,可在这里添加启动脚本。
- /etc/rc.local 用户添加启动项
- /home 用户主目录,比如用户user的主目录就是/home/user,可以用~user表示
- /lib 标准程序设计库存放路径,又叫动态链接共享库(.so 文件),作用类似windows里的.dll文件
- /sbin 超级管理命令,这里存放的是系统管理员使用的管理程序。
- /tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。 /tmp就用来存放临时文件的。
- /root 系统管理员的主目录
- /mnt 用来临时挂载其他的文件系统
- /lost+found 这个目录平时是空的,系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。
- /media 即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录 。
- /proc 虚拟文件目录,可直接访问这个目录来获取系统信息,如version、zoneinfo、meminfo、cpuinfo等,示例命令: cat /proc/version
- /var 所有服务的登录文件或错误日志档案(log files)都在 /var/log 里面
- /boot 包含Linux内核及系统引导程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一 般情况下,GRUB或LILO系统引导管理器也位于这个目录;
- /usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目。
1.4 Linux系统核心组成
- 系统内核
- 进程调度
- 内存管理
- 虚拟文件系统
- 网络接口
- 进程间通信
- Shell : 集成Linux指令和业务逻辑的脚本文件。
- 文件系统: 包含各种媒体(光盘、U盘、硬盘、内存)中文件的管理。
- 应用程序集: 可以在Linux下执行的应用程序,包含Linux内部开发的应用或命令。
【目标】学习Linux时,除了认知它的文件体系之外,应该掌握常用的指令、Vim编缉器的使用、Shell脚本的写法和各类服务应用的安装与管理等。
1.5 查看帮助
学习Linux的命令,可以参考https://www.runoob/linux/linux-tutorial.html文档
在学习Linux丰富的指令之前,可以先学习以下几个实用的命令:
-
man 查看命令帮助信息
用法: man 命令
进入命令之后,有以下四个按键功能:
- w 上一页
- d 或 空格space 下一页
<Enter>
下一行- q 退出
示例1: man ls
-
-h 命令的帮助信息
用法: 命令 -h 或 --help
示例1: ls --help
示例2: ip -h
-
more 可以将一个命令的多页内容进行分页
用法: 命令 | more
示例1: man cd | more
-
tail 显示多页内容的末尾信息,可以通过
-n 10
指定显示末尾10行用法: 命令 | tail -n 10
示例: man ls | tail -n 30
-
which 查看命令是否存在
用法: which 命令
二、文件命令
2.1 查看文件
2.1.1 ls命令
命令格式: ls [options] [file]
常用参数:
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出
-i 显示文件的iNode的信息(文件索引号)
--full-time 显示完整的文件修改时间(默认显示 MM dd hh:mm)
示例:
ls -a
ls -ltrF
2.1.2 ll命令
是ls命令的别名,可以通过which 查看:
# which ll
alias ll='ls -l --color=auto'
【扩展】 alias 命令别名,可以将复杂的命令指定简化的名称。如:
alias la='ls -lA --color=auto'
取消一个命令的别名,可以使用unalias 命令的别名
,如:
unalias la
2.1.3 文件描述
[root@localhost /]# ls -la
总用量 16
dr-xr-xr-x. 17 root root 224 6月 17 16:20 .
dr-xr-xr-x. 17 root root 224 6月 17 16:20 ..
lrwxrwxrwx. 1 root root 7 6月 17 16:13 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 6月 17 16:23 boot
drwxr-xr-x. 20 root root 3080 7月 5 21:24 dev
drwxr-xr-x. 74 root root 8192 7月 5 21:24 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 home
lrwxrwxrwx. 1 root root 7 6月 17 16:13 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 6月 17 16:13 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 2 root root 6 4月 11 2018 opt
dr-xr-xr-x. 105 root root 0 7月 5 21:24 proc
dr-xr-x---. 3 root root 178 7月 5 21:59 root
drwxr-xr-x. 23 root root 700 7月 5 21:24 run
lrwxrwxrwx. 1 root root 8 6月 17 16:13 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 7月 5 21:24 sys
drwxrwxrwt. 7 root root 93 7月 5 21:25 tmp
drwxr-xr-x. 13 root root 155 6月 17 16:13 usr
drwxr-xr-x. 19 root root 267 6月 17 16:22 var
第一行是 总文件及目录的个数
第二行开始,第一列的内容表示的含义如下:
第一位: 文件类型, - 文件, d 目录 l 软连接 s 表示该文件为sock文件
第二位-第四位: 表示文件所属用户的权限, 三位长度,分别表示 r 读, w 写, x可执行 - 表示 无
第五位-第七位: 表示文件所属用户组的权限
第八位-第10位: 表示其它组的用户权限
【注意】第一位字符,还可能是c(表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节)、b(表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是 很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)、p(表示该文件为命令管道文件。与shell编程有关的文件)。
第二列:表示文件的硬连接的数量。
第三列: 表示所属用户
第四列: 表示所属用户组
第五列: 表示文件的大小,目录的大小为0
第六列和第七列: 表示月份和几日
第八列: 表示文件修改的时间
最后列: 表示文件或目录的名称
2.1.4 cd命令
格式: cd 目录名
目录名的特殊符号:
- ~ 代表当前用户的家(home)目录
- / 代表根目录 , Linux的文件最起始的位置。
- 在Window的gitbash 中 每个盘符都以/开始,如c盘,
/c
2.1.5 pwd命令
功能:显示当前的目录
【扩展】在python中,获取当前目录位置:
os.getcwd()
os.path.dirname(os.path.abspath(__file__))
2.2 创建与删除
2.2.1 mkdir 创建目录
格式: mkdir [options] 目录名
参数:
-p 确保目录名称存在,不存在的就建一个【级联创建】
-m 指定目录的权限 mode( 如 chmod), 建议使用权限值;如果使用rwx字符时,建议使用a=rwx, 但不能使用-。
-v 打印创建的目录信息
示例:
mkdir -m 666 abc
mkdir -m a=rx sql
mkdir -m u=rw,g=rx,o=rx sql2
【注意】 mkdir 命令可以同时创建多个目录,如:
mkdir a1 a2 a3
[root@localhost ~]# mkdir -pv apiserver/spider1/code
mkdir: 已创建目录 "apiserver"
mkdir: 已创建目录 "apiserver/spider1"
mkdir: 已创建目录 "apiserver/spider1/code"
2.2.2 touch 创建文件
格式: touch [参数] 文件名或目录名
touch命令可以创建一个空白内容的新文件,也可以不修改文件内容的情况下更新文件最后修改时间。
参数:
-c 当文件不存在时,不创建任何文件
-d, --date=String 指定更新的时间来替换当前时间, 如 touch -d 12:10 a.txt
-m 仅修改时间, 默认行为
-t 使用 [[CC]YY]MMDDhhmm[.ss] 替换当前时间
示例:
touch -t 202010201510 a5.txt
touch -c a1.txt a.txt a2.txt abc sql
【注意】可以更新多个文及目录的最近修改时间
2.2.3 rmdir 删除目录
命令格式同mkdir,如下示例:
rmdir -pv 目录/子目录
【注意】删除空的目录
2.2.4 rm 删除
格式: rm [options] 文件或目录名
功能: 可以删除文件和目录。
参数:
-f 强制删除
-r 删除所有子目录及文件
-d 删除空目录
-v 显示删除操作
示例:
rm -rf apiserver
rm -rf ./*
【注意】./*
表示当前目录下的所有文件及子目录。
2.3 复制与移动
2.3.1 cp命令
格式: cp [options] src dst
功能: 将 src 复制到 dst位置
参数:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。【注意】在CentOS中,好像不起作用。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件(硬连接)。
【注意】 文件名或目录名可以使用 *
通配符表示任意多个任意字符
示例
cp -r abc bcd/
cp abc/a.txt bcd/b.txt
cp sql/*.sql bcd/abc/
cp -l sql/1.sql 1.sql 创建sql/1.sql 文件的硬连接
2.3.2 mv命令
功能: 将源文件或目录移动目标位置上, 可以实现文件重命名的功能。
格式:
mv [OPTION] [-T] SOURCE DEST
mv [OPTION] SOURCE DIRECTORY
mv [OPTION] -t DIRECTORY SOURCE
参数:
-f 强制
-t 指定目标位置
示例:
mv sql/2.sql .
rm -f sql/2.sql # 报错, sql/2.sql 文件不存在。因为上一个命令将它移动了。
mv 2.sql test2.sql # 修改2.sql 的名称为 test2.sql
【提示】.
当前目录, ..
父级目录
2.4 文件查找
命令格式: find [path] [表达式语句]
表达式语句的条件:
-name pattern: 匹配指定模式的文件名,可以使用通配符 *,?
-iname pattern : 不区分大小写的文件名匹配
-readable 文件可读
-writable 文件可写
-executable 文件可执行
-maxdepth n 查找文件最大的深度, 【注意】应该在-name或-iname参数前面。
-depth n 从当前层次开始,查看第n子层次的文件
-delete 查出的文件,将会被删除
示例:
find / -name "*.txt"
find abc -maxdepth 2 -name "*.txt"
find . -name '*.txt' > txt_files.txt # 将查找到的所有文本文件结果写入到 txt_files.txt文件中
面试题: 统计python的代码行数
find code -name "*.py" |xargs cat|grep -E ^$| wc -l
2.5 内容查看
2.5.1 cat 命令
命令: cat [OPTION] FILE
参数:
-A, --show-all 显示所有内容
-n 显示行号
示例:
cat 1.sql # 显示文件的内容
cat -nb 1.sql # 显示文件内容,并显示行号, 但空行不显示行号
cat -nA 1.sql # 显示文件内容,包含行结束符 $
2.5.2 grep命令
可以和cat或find组合使用,为显示的数据增加显示或查找条件。
命令格式:
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
参数:
-E pattern 指定正则表达式,使用单引号,且减少转义字符的使用。如同行`^$`, 数字`[0-9]+`
-m 指定匹配的数量,默认是全部
-n 显示行号
-v pattern 不选择或显示匹配的规则
示例:
cat test2.sql|grep disen # 过滤文件中是否存在disen
grep -E ^[0-9]+$ test2.sql # 显示文件中的每一行的数值
grep -E ^[0-9]+$ -m 1 test2.sql # 显示每一行的匹配的数值
grep -E ^.*$ -n test2.sql # 显示每一行的内容,并显示行号
cat test2.sql |grep -E ^.+$ | wc -l
grep -v ^$ test2.sql # 不显示 test2.sql 文件中的空行的其它行内容
【扩展】正则的量词的写法(7种):
* 最少0次
?最多1次
+ 至少1次
{n} 必须是n次
{n, m} 在[n, m]区间范围的次数
{n,} 至少n 次
{,m} 最多m次
【注意】在Linux中正则不包含转义字符。
2.5.3 xargs命令
格式: 命令 | xargs [参数] [command ] , 不带command ,默认的使用echo 输出
作用:
- 数据以空格进行分隔
- 可以根据参数进行一次或多次处理,默认的处理命令是/bin/echo
- 空行不进行处理,会被忽略
- 遇到命令状态为255时,xargs会立刻停止,譬如发生错误时.
参数:
xargs [-0prtx] [-E eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null]
[-d delimiter] [--delimiter delimiter] [-I replace-str] [-i[replace-
str]] [--replace[=replace-str]] [-l[max-lines]] [-L max-lines]
[--max-lines[=max-lines]] [-n max-args] [--max-args=max-args] [-s max-
chars] [--max-chars=max-chars] [-P max-procs] [--max-procs=max-procs]
[--interactive] [--verbose] [--exit] [--no-run-if-empty]
[--arg-file=file] [--show-limits] [--version] [--help] [command
[initial-arguments]]
常用示例:
xargs -a hello.txt # 读取hello.txt文件内容,将以空格分隔每一行的数据
xargs -a hello.txt -E 'next' # 读取数据时,截止到第一次出现next位置(不包含)
cat my.dat | xargs -L 3 # 一次性读取3行,将换行符转成空格,再使用echo 显示
find . -name '*.py' | xargs
find . -name "hello.txt" | xargs cat
find . -name '*.py' | xargs -E './2.py' cat
查找所有当前目录的.py文件, 并将查询的结果 交给 xargs
xargs 读取 './2.py'之前的所有文件
并显示每个py文件的内容
find . -iname 'S1.Sh'|xargs bash
【提示】s1.sh内容如下:
#!/bin/bash
echo 'hi, disen'
xargs -a t3.txt -s 20 echo
【提示】-s 表示 后面执行的命令行总长度的最大限制,如 echo disen$ create$
总长度 19个字符
2.6 文件连接
2.6.1 软硬连接
在Linux中,一个文件存储分为三块: 文件名、INode(文件的索引编号, ls -i可以查看)和 文件。
硬连接: 硬连接就是一个文件有两个名字。 【注意】文件目录不能创建硬连接
软连接: 软连接是一个完整的文件,软连接最终指向另外一个文件。
【提示】软连接指向的文件被删除后,软连接依然存在,另外重新在连接位置添加文件,还可以继续指向。
2.6.2 ln命令
格式: ln [参数] 源文件或目录 目标文件或目录
必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户尝试制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
-V "-V<备份方式>"或"--version-control=<备份方式>"
--help 显示帮助信息
--version 显示版本信息
示例:
ln -s my _m 给my目录创建 _m软连接
ln -s a.txt a 给a.txt 文件创建 a软连接
ln a.txt ab 给a.txt 文件创建硬连接
rm -f a.txt # 删除 a 指向的文件连接
ln -sf ab a # 强制将 a 指向ab文件
2.7 压缩与解压
命令格式: tar [option] 压缩文件 [文件或目录]
参数:
-c 打包, 不能和 -x 同时使用。
-x 解包, 不能和-c同时使用。
-z 压缩,解压 gz 格式
-v 显示执行过程信息
-f 文件, 打包成什么文件名或解什么压缩包
-C 指定解压路径
示例:
tar -zxvf my.tar.gz . 解压gz压缩文件
tar -cvf new_my.tar.gz my mysql 压缩gz文件
tar -xvf my.tar 解压tar文件
tar -cvf my.tar 创建tar文件
tar -zxvf txts.tar.gz -C _txt_
【提示】_txt_
目录必须存在, -C 必须提供, 否则认为_txt_
是压缩文件
作业: Centos7中安装Python环境
# https://blog.csdn/ahhqdyh/article/details/104923416 第3.4小节
#!/bin/bash
yum update
yum groupinstall -y "Development tools"
yum install -y flex.x86_64 zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
# wget https://www.python/ftp/python/3.7.0/Python-3.7.0.tgz
# wget从官网下载特别慢,网盘链接:https://pan.baidu/s/1f30S25Xny6gOzqD3uu8yUw 密码:jupe
tar xvf Python-3.7.5.tgz
cd Python-3.7.5
./configure --prefix=/usr/local/python3
make
make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
cd ~
pip3 -V
python3 -V
2.8 文件权限
2.8.1 权限结构
文件权限分三个部分(u用、g组、o其它),每一部分包括三个权限描述(r、w、x),表示的内容如下所示:
用户: u user
用户组:g group
其他用户:o other
只读: r 4, read
只写: w ,2, write
可执行: x, 1
使用三个数完成了8个数值, 常用组合:
777 -> rwxrwxrwx
666 -> rw-rw-rw-
555 -> r-xr-xr-x
444 -> r--r--r--
333 -> -wx-wx-wx
222 -> -w--w--w-
111 -> --x--x--x
755 -> rwxr-xr-x
644 -> rw-r--r--
2.8.2 权限修改
格式:chmod [ugoa][+-=][rwx] filename
说明:
a: ugo 表示全部
权限操作:
+ 增加权限
- 去除权限
= 赋予权限
示例:
chmod 777 filename
chmod +x aa.sh
三、用户命令
3.1 who与whoami命令
3.1.1 who命令
格式: who [-abdHlmpqrsTtu] [file]
参数说明:
-a 同 -bdlprTtu.
-b 最后启动的时间
-d 显示已关闭的进程客户端
-H 显示标题头
-m 只显示当前客户端(类似于 am i)
-q 快速模式,只显示用户名和用户数量, 当选择会让其它选择无效(除a 之外)
-s 默认选择,显示用户名、Line命令(连接线路-通道)和时间字段及备注。
-u 显示每个用户的空闲时间和关键进程的PID
am I 显示当前进程的用户的名
示例:
who -aH
who -m
who -uH
3.1.2 whoami命令
类似于 who am i
命令,显示当前用户的ID(名称)。
3.2 用户管理命令
3.2.1 增加用户
命令格式
useradd [-d home] [-s shell] [-c comment]
[-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
参数说明:
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的主目录,替换系统默认值/home/<用户名>
-D:变更预设值。
-e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.
-g:指定用户所属的群组。
值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。
如果没有指定,默认情况下根据 /etc/login.defs中配置USERGROUPS_ENAB的结果(yes或no),确认是否自动创建组(组名同用户名)。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录(home目录)。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。默认值为/bin/bash。
-u:指定用户ID号。在系统中必须是唯一的,0~499默认是保留给系统用户账号使用的。
-p: 创建用户时,可以指定口令或输入
涉及到相关的配置文件:
/etc/default/useradd # 指定用户的过期时间(EXPIRE)和过期时间到期后的禁用策略(INACTIVE)
/etc/login.defs # 指定创建用户时是否创建用户组的策略(USERGROUPS_ENAB)
/etc/passwd # 用户的相关信息,结构是 `用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell`
/etc/shadow # passwd中口令信息使用x或*表示,加密之后存在shadow文件中, 内容结构是`用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段`
/etc/group # 所有组相关的信息,内容结构是`组名:密码:GID:该用户组中的用户列表`
示例:
useradd -d /home/judy -mr judy # 创建judy用户并指定了用户根目录
useradd -u 544 -d /home/tom -g tom -m tom -p tom
useradd -mr disen # 创建disen用户和disen组,同时建议系统账号和创建home目录
passwd disen # 为disen用户设置口令, 口令要求至少8位,如disen12345678
创建成功之后, 可以通过ssh命令尝试远程连接。
练习:
# 使用创建的用户登录之后, 可以尝试创建文件及目录,查看文件及目录的所属用户和组及权限。
【扩展】/etc/shadow结构说明
-
加密密码: 目前 Linux 的密码采用的是 SHA512 散列加密算法(之前是MD5或DES)。所有伪用户或新建用户的口令是!!或*,这种用户是不能登录。
-
最后修改时间: 以1970-1-1开始计算到目前时间的天数,如18451。
可以使用
date -d "1970-01-01 18451 days"
命令查看具体的日期。date -d "1970-01-01 18451 days"
date -d "1970-01-01 18451 days" +"%Y-%m-%d %B %A"
-
最小修改时间间隔(天):从最后修改时间开始,多少天之内不能修改,如果是0,表示随时修改。
-
密码有效期(天): 默认为99999,也就是273年,可认为是永久。如是90,表示90天后需要修改密码。
-
密码变更前的警告天数: 距离下次修改口令的n天之前,系统会提醒用户 “再过 n 天你的密码就要过期了,请尽快重新设置你的密码!”。
-
密码过期后的宽限天数: 可以在宽限的时间内,允许用户登录。
-
账号失效时间: 在规定的时间之外,不论你的密码是否过期,都将无法使用(或登录)。
3.2.2 修改用户
格式:usermod 选项 用户名
参数:
同useradd
-l 新用户名, 新的用户名不能是已存在的。
示例:
usermod -G lili,dage davie # 为davie用户添加两个附加组。
usermod -e 2020-07-10 davie # 修改davie用户的过期时间
usermod -l Davied davie # 修改用户登录名
3.2.3 删除用户
格式:userdel 选项 用户名, 默认用户删除不会删除家的
【重要】使用 -r 可以在删除用户的时候删除相关信息,如示例:
userdel -r judy
userdel 命令使用如下值退出:
0 成功
1 无法更新密码文件
2 无效的命令语法
6 指定的用户不存在
8 用户已经登录
10 无法更新组文件
12 无法删除主目录
3.2.4 修改口令
命令格式: passwd 用户名
参数:
-l 锁定口令,即禁用账号。 (lock)
-u 口令解锁, (unlock)
-d 使账号无口令。(delete)
-f 强迫用户下次登录时修改口令。
【扩展】所有用户的口令信息:/etc/passwd,其文件内容格式:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
示例:
useradd -rm davie
passwd davie
passwd -l davie # 锁定账号,不能登录。
passwd -u davie # 解锁账号,恢复登录。
passwd -d davie # 删除账号口令
cat /etc/shadow | grep davie # 执行删除口令操作前后,可以观察用户口令的信息变化。
3.3 用户组操作
3.3.1 增加组
格式:groupadd [选项] 用户组
参数:
-g GID 指定新用户组的组标识号(GID),默认是按/etc/group中最大组号自增1,产生新组号。
-f 当新的组名已存在,则不报错(以成功的状态退出,且不创建新的组)
示例:
groupadd mysql
groupadd -g 1920 dev1 # 最小或最大的组号,可以在/etc/login.defs文件中。
cat /etc/login.defs|grep GID_MIN # 1000
cat /etc/login.defs|grep GID_MAX # 60000
创建成功的组信息,可以在/etc/group
查看。
cat /etc/group | tail -n 10
cat /etc/group | grep dev1
usermod -G nice davie
usermod -G nice xc
cat /etc/group | grep nice # 查看nice组信息,:分隔的最一后一部分是组中用户成员,多个成员用逗号分隔。
3.3.2 删除组
格式: groupdel 组ID(名称)
示例:groupdel mysql
groupdel mysql
groupdel nice # 从/etc/group文件中删除组信息。
3.4 主组与附加组
主组 -g:
-
某一个组作为任意用户的主组
-
这个组就不能直接删除了,需要清空用户
[root@localhost ~]# useradd -rm davie
[root@localhost ~]# groupdel davie
groupdel:不能移除用户“davie”的主组
[root@localhost ~]# userdel -r davie
userdel: davie 邮件池 (/var/spool/mail/davie) 未找到
[root@localhost ~]# groupdel davie
groupdel:“davie”组不存在
附加组 -G:
-
附加组可以随时删除
-
和附加组相关联的用户会自动解除关系
3.5 组和用户关系
- 一个用户可以同时属于多个组
- 一个组可以同时包含多个用户
- 一个用户只能有一个主组,可以有多个附加组
【注意】组的文件在配置中/etc/group, 内容格式如下:
组名: 口令:组号:组内用户列表
【提示】x 或 * 表示组没有口令。
3.6 chown命令
修改文件所属组及用户。
命令格式:
chown [-fhnv] [-R [-H | -L | -P]] owner[:group] file
参数:
-f 不显示任何错误信息
-R 递归修改文件目录下的所有文件和目录的归属(用户和组)
-v 显示修改的内容
示例:
chown mysql:mysql data
[root@localhost disen]# chown disen:dev1 *.sql
[root@localhost disen]# ls -la
总用量 20
drwx------. 2 disen disen 130 7月 8 15:37 .
drwxr-xr-x. 17 root root 230 7月 8 15:32 ..
-rw-rw-r--. 1 disen dev1 0 7月 8 15:36 1.sql
-rw-rw-r--. 1 disen dev1 0 7月 8 15:37 2.sql
-rw-r--r--. 1 root root 8 7月 8 15:33 a.txt
-rw-r--r--. 1 disen disen 18 10月 31 2018 .bash_logout
-rw-r--r--. 1 disen disen 193 10月 31 2018 .bash_profile
-rw-r--r--. 1 disen disen 231 10月 31 2018 .bashrc
-rw-r--r--. 1 disen dev1 0 7月 8 15:37 b.txt
-rw-------. 1 disen disen 689 7月 8 15:37 .viminfo
mv 1.sql 1.sh
mv 2.sql 2.sh
1.sh 文件内容:
#!/bin/sh
echo 'hi, 1.sh!'
修改1.sh文件的权限,将文件所属组用户的权限修改为rx:
chmod g=rx 1.sh
usermod -G dev1 davie
usermod -G dev1 xc
切换davie,尝试执行/home/disen/1.sh文件:
[davie@localhost disen] ./1.sh
【提示】确认/home/disen目录的权限(三部分ugo)都具有执行权限。
[disen@localhost disen] mkdir -p a/b/c/d
[disen@localhost disen] mkdir -p a/b2/c2/d2
[root@localhost disen] chown -R disen:dev1 a # 将a及其子目录或文件的所属用户及组修改为disen和dev1
四、服务与进程命令
Linux的所有服务(service)都在 /etc/init.d目录下。
每一个服务都是一个进程,存在服务进程(后台进程或守护进程)。
4.1 systemctl命令
此命令同service功能相同。在Window机器中通过 services.msc 命令打开服务面板。
4.1.1 查看服务状态
格式: systemctl status 服务
示例:
systemctl status sshd
# service的命令
service sshd status
4.2 启动服务
格式: systemctl start 服务名
示例:
systemctl start sshd
# service命令
service sshd start
4.3 停止服务
格式: systemctl stop 服务名
示例:
systemctl stop sshd
# service命令
service sshd stop
4.4 重启服务
格式: systemctl restart 服务名
示例:
systemctl restart sshd
# service命令
service sshd restart
4.5 开机启动服务
格式: systemctl enable 服务名
示例:
systemctl enable sshd
4.6 取消开机启动服务
格式: systemctl disable 服务名
示例:
systemctl disable sshd
4.2 ps进程命令
ps命令就是最基本进程查看命令, 可以查看进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、进程占用资源情况等。【注意】ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。
命令格式:
ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]]
[-g grp[,grp...]] [-u [uid,uid...]]
[-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]
ps [-L]
参数说明:
-A :所有的进程均显示出来,与 -e 具有同样的效用;
-a : 显示现行终端机下的所有进程,包括其他用户的进程;
-u :以用户为主的进程状态 ;
x :通常与 a 这个参数一起使用,可列出较完整信息。
l :较长、较详细的将该PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。
4.2.1 显示当前用户下的进程
命令:
ps -l
相关输出信息意义:
F 代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
S 代表这个程序的状态 (STAT);
UID 代表执行者身份
PID 进程的ID号!
PPID 父进程的ID;
C CPU使用的资源百分比
PRI指进程的执行优先权(Priority的简写),其值越小越早被执行;
NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。
ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行 的程序,一般就是『 - 』
SZ 使用掉的内存大小;
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
TTY 登入者的终端机位置;
TIME 使用掉的 CPU 时间。
CMD 所下达的指令名称
4.2.2 列出所有运行的进程
命令:
ps aux
结果说明:
USER:该进程属于那个使用者账号。
PID :该进程的进程ID号。
%CPU:该进程使用掉的 CPU 资源百分比;
%MEM:该进程所占用的物理内存百分比;
VSZ :该进程使用掉的虚拟内存量 (Kbytes)
RSS :该进程占用的固定的内存量 (Kbytes)
TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有:R、S、T、Z。
R :该程序目前正在运作,或者是可被运作;
S :该程序目前正在睡眠当中,但可被某些讯号(signal) 唤醒。
T :该程序目前正在侦测或者是停止了;
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
START:该进程被触发启动的时间;
TIME :该进程实际使用 CPU 运作的时间。
COMMAND:该程序的实际指令。
4.2.3 列出所有的sshd远程的进程
ps -ef|grep sshd | grep -v grep
root 3274 1 0 17:07 ? 00:00:00 /usr/sbin/sshd -D
root 3301 3274 0 17:07 ? 00:00:00 sshd: root@pts/5
root 3602 3274 0 17:07 ? 00:00:00 sshd: root@pts/0
root 3631 3274 0 17:07 ? 00:00:00 sshd: root@pts/1
root 3700 3274 0 17:07 ? 00:00:01 sshd: root@pts/3
root 3718 3274 0 17:07 ? 00:00:00 sshd: root@pts/4
root 3815 3274 0 17:07 ? 00:00:00 sshd: root@pts/2
root 3839 3274 0 17:07 ? 00:00:00 sshd: root@pts/6
root 3895 3274 0 17:07 ? 00:00:00 sshd: root@pts/7
root 3953 3274 0 17:08 ? 00:00:00 sshd: root@pts/10
root 3955 3274 1 17:08 ? 00:00:05 sshd: root@pts/8,pts/9
root 6816 3274 0 17:10 ? 00:00:00 sshd: root@pts/11
root 6834 3274 0 17:10 ? 00:00:00 sshd: root@notty
root 8695 3274 2 17:12 ? 00:00:00 sshd: root@pts/12
4.3 netstat命令
在Centos中需要通过yum命令安装 net-tools
yum install -y net-tools
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
命令格式:
netstat [-veenNcCF] [] -r
netstat {-V|--version|-h|--help}
netstat [-vnNcaeol] [<Socket> ...]
netstat { [-veenNac] -I[] | [-veenNac] -i | [-cnNe] -M | -s } [delay]
示例:
netstat -atulpn
查看 22端口的占用情况:
# netstat -nltp | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3274/sshd
tcp6 0 0 :::22 :::* LISTEN 3274/sshd
4.4 kill命令
可以干掉或中断进程, 信号是9, 和ps 、who 或 netstat命令配合使用。
kill -9 进程ID
kill -l 列出所有信号
停止sshd服务进程及它的连接子进程:
ps -ef|grep sshd |grep -v grep |awk '{print $2}'|xargs kill
【提示】awk 可以执行脚本,针每一行的数据,以空格分隔成多列, $2表示第2列。可以参考文档:https://www.runoob/linux/linux-comm-awk.html
只查看sshd的子进程信息:
ps -ef|grep sshd|grep -v grep| grep -v /usr/sbin/sshd
root 22124 22112 1 17:39 ? 00:00:00 sshd: root@pts/0
root 22131 22112 0 17:39 ? 00:00:00 sshd: root@pts/2
root 22155 22112 1 17:39 ? 00:00:00 sshd: root@pts/1
root 22177 22112 0 17:39 ? 00:00:00 sshd: root@pts/3
root 22214 22112 2 17:39 ? 00:00:01 sshd: root@pts/4,pts/5
root 22255 22112 0 17:39 ? 00:00:00 sshd: root@pts/6
root 22341 22112 1 17:40 ? 00:00:00 sshd: root@pts/7
root 22433 22112 0 17:40 ? 00:00:00 sshd: root@pts/8
root 22455 22112 1 17:40 ? 00:00:00 sshd: root@notty
root 22655 22112 0 17:40 ? 00:00:00 sshd: root@pts/9
root 22808 22112 1 17:40 ? 00:00:00 sshd: root@pts/12
root 22825 22112 3 17:40 ? 00:00:01 sshd: root@pts/10,pts/11
root 23021 22112 0 17:40 ? 00:00:00 sshd: root [priv]
sshd 23022 23021 0 17:40 ? 00:00:00 sshd: root [net]
4.5 自定义服务
参考: /etc/init.d/network脚本。
在 /etc/init.d/ 目录下,编写一个服务脚本,如idea文件,内容如下:
#!/bin/sh
# chkconfig: 2345 80 90
# description: idea register server
case "$1" in
start)
sh /usr/local/idea/start.sh
;;
stop)
ps -ef |grep idea|grep -v grep|awk '{print $2}'|xargs kill
;;
esac
在 start.sh脚本的内容如下:
#!/bin/sh
echo 'Staring Python Service'
python3
可以尝试启动服务和停止服务。
【扩展】Linux下socket进程间通信-Python语言实现
# multiprocessing.Process 进程类
# threading.Thread类
# socket
# 1. 实现网络套接字的通信(C/S客户端和服务端之间有通信)
# 2. 在Linux中,实现进程间的通信
# socket核心函数
# 1. 主进程/server端:
# - socket = socket.socket(AF_INET|AF_UNIX)
# - socket.bind((hostname|ip, port)) 或 socket.bind(xxx.sock文件路径)
# - socket.listen() 开始监听
# - client, address = socket.accept() 等待客户端连接,对应是client客户端的socket.connect(bind方法的参数)方法
# 2. 客户端【进程】
# - socket.socket(AF_INET 默认|AF_UNIX)
# - socket.connect((server_ip, port)) 或 socket.connect(xxx.sock文件路径)
# 3. 通信的方法: socket.send(b'') , msg = socket.recv(8*1024) # 8192
# - socket.close()
实战: 实现缓存的服务器和客户端
# 设计的思路
服务器提供添加、删除、查询、设置过期时间功能,对数据进行缓存。
服务器在接收客户端发送的指令时,需要解析,根据解析的结果来调用相关的功能。
客户端连接,编写服务器识别的指令:
# select 0 选择存储的空间(库)
[0]# set name disen
[0]# get name
disen
[0]# del name
[0]# expire name 60
[0]# exit
/etc/init.d/cache/server.py
import socket
from threading import Thread
import os
# {(192.168.31.11, 45538): {0: {name:'disen'}, 1: {} }}
# 作业:尝试地从本地加载数据 【pickle和os两个模块】
caches = {
} # 缓存信息,以dict存储 。
class ClientThread(Thread):
def __init__(self, client, addr):
super().__init__()
self.client = client
self.addr = addr
self.current_cache = None
def run(self):
self.client.send(b'OK')
# 判断之前是否连接过
if self.addr not in caches:
caches[self.addr] = {
}
while True:
# 接收客户端发送过来的命令
msg = self.client.recv(8192)
if b'exit' == msg:
break
cmd = msg.decode('utf-8')
if cmd.startswith('set'):
k,v = cmd.split()[1:]
self.current_cache[k] = v
self.client.send(b'OK')
elif cmd.startswith('select'):
index = cmd.split()[-1]
# 判断index是否已存在
if index not in caches[self.addr]:
caches[self.addr][index] = {
}
self.current_cache = caches[self.addr][index]
self.client.send(b'OK')
elif cmd.startswith('get'):
k = cmd.split()[-1]
if k in self.current_cache:
v = self.current_cache[k]
self.client.send(v.encode('utf-8'))
else:
resp_text = f'Not exists {k}'
self.client.send(resp_text.encode('utf-8'))
self.client.close()
server = socket.socket(socket.AF_UNIX)
server.bind('/var/run/cache.sock') # 自动创建
server.listen() # 开启监听
print('Cache Server Running...')
try:
while True:
client, addr = server.accept() # 阻塞方法
ClientThread(client, addr).start() # 启动客户端线程
except:
os.remove('/var/run/cache.sock')
# 作业:将字典数据持久化存储 【提示: pickle 库】
/etc/init.d/client.py
import socket
def show_msg(msg, prefix='#'):
print(msg)
client = socket.socket(socket.AF_UNIX)
client.connect('/var/run/cache.sock')
msg = client.recv(1024)
show_msg(msg.decode('utf-8'))
prefix = '#'
while True:
cmd = input(f'{prefix}')
client.send(cmd.encode('utf-8'))
if cmd.startswith('select'): # select 1
index = cmd.split()[-1]
prefix = f'[{index}]#'
elif cmd.startswith('exit'):
break
resp_txt = client.recv(8192)
show_msg(resp_txt.decode('utf-8'), prefix)
print('Bye Bye')
增加服务脚本 /etc/init.d/cached, 内容:
#!/bin/sh
# chkconfig: 2345 80 90
# description: Cache Server
case "$1" in
start)
python3 cache/server.py
;;
stop)
ps -ef |grep cached|grep -v grep|awk '{print $2}'|xargs kill
;;
esac
设置文件的执行权限:
chmod +x /etc/init.d/cached
修改client.py文件,增加第一行内容:#!/usr/local/bin/python3
, 另外,增加可执行的文件权限
chmod +x /etc/init.d/cache/client.py
创建client.py文件的软连接:
ln -s /etc/init.d/cache/client.py /usr/bin/cache
在任何位置,通过cache命令,启动client.py客户端程序。
五、硬盘命令
5.1 free命令
参数 :
-b, --bytes show output in bytes
-k, --kilo show output in kilobytes
-m, --mega show output in megabytes
-g, --giga show output in gigabytes
查看内存使用情况:
free -mh
可以使用 top命令,查看CPU和内存使用情况。
5.2 df命令
命令格式: df [选项] [文件]…
参数:
-a, --all 所有文件信息: pseudo 虚假的, duplicate 重复的, inaccessible 不可达
-h, --human-readable 显示人性化的文件大小 (如, 1K 234M 2G)
-i, --inodes 显示inode 信息而非块使用量
-k 即--block-size=1K
-l, --local 只显示本机的文件系统
-T, --print-type 显示文件类型
5.2.1 显示存储空间大小
df -h
5.2.2 显示各存储空间大小
df -ah
5.2.3 仅查看本地文件
df -ahlT
df -hT
5.3 du命令
格式:
du [选项]... [文件]...
du [选项]... --files0-from=F
参数:
-0, --null end each output line with 0 byte rather than newline
-a, --all write counts for all files, not just directories
--apparent-size print apparent sizes, rather than disk usage; although
the apparent size is usually smaller, it may be
larger due to holes in ('sparse') files, internal
fragmentation, indirect blocks, and the like
-B, --block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'-BM' prints sizes in units of 1,048,576 bytes;
see SIZE format below
-b, --bytes equivalent to '--apparent-size --block-size=1'
-c, --total 显示所有文件的总和大小,包括最后的总量信息。
-D, --dereference-args dereference only symlinks that are listed on the
command line
-d, --max-depth=N 显示每个目录的大小,但显示到指定子目录层次。
-H equivalent to --dereference-args (-D)
-h, --human-readable 显示人性化大小 (e.g., 1K 234M 2G)
-k like --block-size=1K k字节
-L, --dereference dereference all symbolic links
-l, --count-links count sizes many times if hard linked
-m like --block-size=1M
-P, --no-dereference don't follow any symbolic links (this is the default)
-S, --separate-dirs 显示每个子目录的大小
-s, --summarize 仅显示一个总和
-t, --threshold=SIZE exclude entries smaller than SIZE if positive,
or entries greater than SIZE if negative
--time show time of the last modification of any file in the
directory, or any of its subdirectories
--time=WORD show time as WORD instead of modification time:
atime, access, use, ctime or status
--time-style=STYLE show times using STYLE, which can be:
full-iso, long-iso, iso, or +FORMAT;
FORMAT is interpreted like in 'date'
-X, --exclude-from=FILE exclude files that match any pattern in FILE
--exclude=PATTERN exclude files that match PATTERN
-x, --one-file-system skip directories on different file systems
--help 显示此帮助信息并退出
--version 显示版本信息并退出
5.3.1 当前目录的空间使用情况
du -sh
-s 统计求和,将所有目录及文件的大小的总和计算出来。结果只有一行。
5.3.2 查看指定目录的空间使用情况
du -h --max-depth=1 /home
统计/home下所有用户的目录的空间使用情况。
比较以下命令的结果:
du -c -d 1 /home
5.3.3 查看某个文件容量大小
du -h 1.txt
du -h 1.txt 2.txt
查看当前目录及其子目录所有文本文件的大小:
find . -name '*.txt'|xargs du -h
【扩展】修改主机的时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或者使用 tzselect 命令,根据提示选择Asia/Shanghai
。
5.4 fdisk 命令
格式:
fdisk [选项] <磁盘> 更改分区表
fdisk [选项] -l <磁盘> 列出分区表
fdisk -s <分区> 给出分区大小(块数)
参数:
-b <大小> 扇区大小(512、1024、2048或4096)
-c[=<模式>] 兼容模式:“dos”或“nondos”(默认)
-h 打印此帮助文本
-u[=<单位>] 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认)
-v 打印程序版本
-C <数字> 指定柱面数
-H <数字> 指定磁头数
-S <数字> 指定每个磁道的扇区数
5.4.1 查看硬盘相关信息
fdisk -l
5.4.2 新硬盘分区
如,新增了一个硬盘 /dev/sdb, 使用前需要进行分区
fdisk /dev/sdb
本文标签: Linux
版权声明:本文标题:Centos7-Linux 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1726764457a1083425.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论