目录
Linux简介
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux不仅系统性能稳定,而且是开源软件。随着开源软件越来越多,而Linux平台比windows要稳定可靠很多。
Linux用户组与管理
root用户 (ID:0)
系统用户 (ID:1 ~ 499)
普通用户 (ID:500以上)
Linux用户在操作系统中可以进行日常管理和维护
/etc/passwd 保存用户信息
/etc/shdaow 保存用户密码(以加密形式保存)
/etc/group 保存组信息
/etc/login.defs 用户属性、密码过期时间、密码最大长度等限制
/etc/default/useradd 显示或更改默认的useradd配置文件。
Linux权限二进制显示:
rwx = 111
r-x = 101
rw- = 110
r-- = 100
以此类推,转为十进制显示:
rwx = 111 = 4+2+1 = 7
r-x = 101 = 4+0+1 = 5
rw- = 110 = 4+2+0 = 6
r-- = 100 = 4+0+0 = 4
r=4,w=2,x=1 来表示权限
Linux实用命令
cd
主要使用目录切换
[root@localhost ~]# cd /root
ls
主要用于浏览文件或文件夹
-a -all 不隐藏任何以“.”开始的文件或文件夹
-l 显示详细信息
-h 文件大小显示为GB MB KB
-t 根据修改时间排序
[root@localhost ~]# ls /etc/passwd
pwd
主要用于查看当前所在目录路径
[root@localhost ~]# pwd
/root
mkdir
用于创建一个或多个空目录
-m --mode=模式 设定权限<模式> (类似 chmod)
-p --parents 可以创建目录的上层目录(类似递归)
-v --verbose 每次创建目录都显示信息
[root@localhost ~]# mkdir /root/network
rm
删除文件或目录
-f --force 强制删除,不提示确认
-i 在删除前需要确认
-r -R --recursive 递归删除目录及内容
[root@localhost ~]# rm -rf /root/network
cp
主要用来复制文件,备份
-i --interactive 覆盖前提示
-R -r --recursive 递归复制目录及其子目录内的所有内容
[root@localhost ~]# cp /etc/passwd /root/passwd # 也可以将/root/passwd改成其他名字,相当于是复制重命名
mv
用于重命名或移动文件
-f --force 覆盖前不提示
-i --interactive 覆盖前提示
-v --version 显示版本详细信息
[root@localhost ~]# mv /root/network /opt/network # 移动目录
[root@localhost ~]# mv /root/network /root/network_mv # 重命名
touch
用于创建普通文件
-a 只更改访问时间
-m 只更改修改时间
[root@localhost ~]# touch /root/network.txt
cat
用于查看文件内容
-A --show-all
-n --number 对输出的所有行编号
-s --squeeze-blank 不输出多行空行
[root@localhost ~]# cat /etc/passwd
head
查看文件内容,默认查看文件前10行内容
-v --verbose 显示包含给定文件名的文件头
-n --lines==[-]K 定义显示多少行
[root@localhost ~]# head -n 1 /root/passwd
tail
查看文件内容,默认查看文件尾部10行
-n --lines==[-]K 定义显示多少行
[root@localhost ~]# tail -n 1 /root/passwd
chmod
修改文件或目录的权限
u 表示该档案的拥有者
g 表示与该档案的拥有者属于同一个群体(group)者
o 表示其他以外的人,a 表示这三者皆是。
+表示增加权限
- 表示取消权限
= 表示唯一设定权限
r 表示可读取
w 表示可写入
x 表示可执行
X 表示只有当该档案是子目录或者该档案已经被设定过为可执行
-R 递归添加权限
[root@localhost ~]# chmod a+x /root/network
[root@localhost ~]# chmod a-r /root/network
[root@localhost ~]# chmod a=rwx /root/network
chown
修改文件的拥有者
-R 递归变更权限
[root@localhost ~]# chown root:root /root/network
echo
打印字符或回显
[root@localhost ~]# echo "hello word!" >> /root/network-mv.txt
df
显示指定文件的可用空间
-a --all 全部文件系统列表
-h 人类可阅读的方式显示
-T 文件系统类型
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 899M 0 899M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.6M 901M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 37G 6.0G 32G 16% /
/dev/sda1 xfs 1014M 194M 821M 20% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
du
检查硬盘使用情况,统计文件或目录及子目录使用硬盘的空间大小
-a 显示所有目录或文件的大小
-b 以byte为单位,显示目录或文件的大小
-c 显示目录或文件的总和
-k 以KB为单位输出
-m 以MB为单位输出
-s 仅显示目录或文件的总计数值
-h 以K,M,G为单位,提高信息可读性
-D 显示指定符号链接的源文件大小
[root@localhost ~]# du -h /home/ # 显示目录或者文件所占空间
20K /home/network
20K /home/hfish
40K /home/
free
显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-g 以GB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 573M 896M 9.6M 349M 1.1G
Swap: 2.0G 0B 2.0G
vi/vim
文本编辑器,编辑文本
[root@localhost ~]# vim /root/network/network-mv.txt
rpm
软件管理工具,安装卸载软件
-i 安装软件包
--nodeps 不验证软件包的依赖
-v 可视化,提供更多的详细信息的输出
-h 显示安装进度
另外的常用的附带参数为:
--force 强制安装,即使覆盖其他包的文件也要安装
-a 查询所有已经安装的软件包
-f 查询 文件所属于的软件包
-q 查询软件包(通常用来看下还未安装的软件包)
-l 显示软件包的文件列表
-d 显示被标注为文档的文件列表
-c 显示被标注为配置文件的文件列表 最后这两个用的很少了
[root@localhost ~]# rpm -ivh package.rpm #安装一个rpm包
[root@localhost ~]# rpm -ivh --nodeeps package.rpm #安装一个rpm包而忽略依赖关系警告
[root@localhost ~]# rpm -U package.rpm #更新一个rpm包但不改变其配置文件
[root@localhost ~]# rpm -F package.rpm #更新一个确定已经安装的rpm包
[root@localhost ~]# rpm -e package_name.rpm #删除一个rpm包
[root@localhost ~]# rpm -qa #显示系统中所有已经安装的rpm包
[root@localhost ~]# rpm -qa | grep httpd #显示所有名称中包含 "httpd" 字样的rpm包
[root@localhost ~]# rpm --checksig package.rpm #确认一个rpm包的完整性
[root@localhost ~]# rpm -qa gpg-pubkey #确认已安装的所有rpm包的完整性
[root@localhost ~]# rpm -V package_name #检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间
[root@localhost ~]# rpm -Va #检查系统中所有已安装的rpm包- 小心使用
[root@localhost ~]# rpm -Vp package.rpm #确认一个rpm包还未安装
tar
解压与压缩命令
-c 表示需要打包档案
-C 在解压的时候, 可以定位到指定目录下解压
-t 显示都有哪些档名
-x 表示需要解压
-j 通过bzip2 压缩/解压 档名命名为*.tar.bz2
-z 通过gzip 压缩/解压 档名命名为*.tar.gz
-r 向包中追加,只能向不带压缩的包中追加
-v 显示处理的详情
-f 后面跟上压缩包
[root@localhost ~]# tar -cvf package.tar.gz package # 打包package文件或目录为.tar.gz后缀的压缩包
[root@localhost ~]# tar -tf package.tar.gz # 查看package.tar.gz的内容
[root@localhost ~]# tar -rf package.tar.gz network.txt # 将network.txt文件追加到package.tar.gz中
[root@localhost ~]# tar -czvf network.tar.gz network # 使用gzip格式打包并压缩network目录
[root@localhost ~]# tar -cjvf network.tar.gz network # 使用bzip2格式打包并压缩network目录
zip
zip压缩工具
-f freshen:只更改文件;
-u update:只更改或新文件;
-d 从压缩文件删除文件;
-m 中的条目移动到 zipfile(删除 OS 文件);
-r 递归到目录;
-j junk(不记录)目录名;
-l 将 LF 转换为 CR LF(-11 CR LF 至 LF);
-1 压缩更快 1-9 压缩更好;
-q 安静操作,不输出执行的过程;
-v verbose 操作/打印版本信息;
-c 添加一行注释;
-z 添加 zipfile 注释;
-o 读取名称使 zip 文件与最新条目一样旧;
-x 不包括以下名称;
-F 修复 zipfile(-FF 尝试更难);
-D 不要添加目录条目;
-T 测试 zip 文件完整性;
[root@localhost ~]# zip -rv network.zip /root/network/
unzip
解压zip格式工具
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-l 显示压缩文件内所包含的文件。
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t 检查压缩文件是否正确。
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 执行是时显示详细的信息。
-z 仅显示压缩文件的备注文字。
-a 对文本文件进行必要的字符转换。
-b 不要对文本文件进行字符转换。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中原有的目录路径。
-L 将压缩文件中的全部文件名改为小写。
-M 将输出结果送到more程序处理。
-n 解压缩时不要覆盖原有的文件。
-o 不必先询问用户,unzip执行后覆盖原有文件。
-P <密码> 使用zip的密码选项。
-q 执行时不显示任何信息。
[root@localhost ~]# unzip test.zip ->将test.zip解压到当前文件下
[root@localhost ~]# unzip -n test.zip -d /tmp ->将test.zip解压到/tmp目录下,并且不要覆盖已有文件
[root@localhost ~]# unzip -v test.zip ->查看test.zip内容,但不解压
[root@localhost ~]# unzip -o test.zip -d tmp/ ->将test.zip解压到/tmp目录下,并且覆盖已有文件
chattr
用来改变文件属性,可执行lsattr指令查询其属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
模式:
-a:让文件或目录仅供附加用途。
-b:不更新文件或目录的最后存取时间。
-c:将文件或目录压缩后存放。
-d:将文件或目录排除在倾倒操作之外。
-i:不得任意更动文件或目录。
-s:保密性删除文件或目录。
-S:即时更新文件或目录。
-u:预防意外删除。
选项:
-R 递归处理,将指令目录下的所有文件及子目录一并处理;
-v<版本编号> 设置文件或目录版本;
-V 显示指令执行过程;
+<属性> 开启文件或目录的该项属性;
-<属性> 关闭文件或目录的该项属性;
=<属性> 指定文件或目录的该项属性。
# 用chattr命令防止系统中某个关键文件被修改
# 然后试一下rm、mv、rename等命令操作于该文件,都是得到Operation not permitted的结果。
[root@localhost ~]# chattr +i /etc/fstab
# 让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作
[root@localhost ~]# chattr +a /data1/user_act.log
lsattr
查看文件的第二扩展文件系统属性
-a: 列出目录中的全部文件
-E: 显示设备属性的当前值, 从设备数据库中获得
-D: 显示属性的名称, 属性的默认值,描述和用户是否可以修改属性值得标志
-R: 递归的操作方式
-V: 显示指令的版本信息
[root@localhost ~]# lsattr -R nentwork # 递归显示abc 目录下所有文件属性
[root@localhost ~]# lsattr network.txt # 查看文件属性
----i----------- network.txt
源码包软件安装
以zip/tar结尾的源代码包安装
./configure # 预编译,用于检测系统基准环境库是否满足gcc,生成makefile文件
make # 编译,基于第1步生成的maksefile文件进行编译
make install # 安装,编译完成之后将相关可运行文件安装到系统内。
常见的源码安装需要./configure、make、make install 三个步骤,某些特殊的可能只要1个或2个步骤
nginx源码安装
[root@localhost ~]# tar -xcvf nginx-1.20.tar.gz
[root@localhost ~]# cd nginx-1.20
[root@localhost nginx-1.20]# ./configure # 预编译
[root@localhost nginx-1.20]# make # 编译
[root@localhost nginx-1.20]# make install # 安装
yum
安装软件工具,需要联网,使用简便、快捷、高效
[root@localhost ~]# yum install httpd # 安装httpd软件包
[root@localhost ~]# yum search 软件名 # 搜索软件
[root@localhost ~]# yum list # 显示所有已安装及可安装包
[root@localhost ~]# yum remove httpd # 删除软件包httpd
[root@localhost ~]# yum erase httpd # 删除软件包httpd
[root@localhost ~]# yum update # 内核升级或软件更新
[root@localhost ~]# yum update httpd # 更新httpd软件
[root@localhost ~]# yum check-update # 检查可更新的程序
[root@localhost ~]# yum info httpd # 显示安装包信息httpd
[root@localhost ~]# yum provides */bin/cat # 列出软件包提供哪些文件
[root@localhost ~]# yum deplist httpd # 查看程序httpd依赖情况
[root@localhost ~]# yum clean all # 清除缓存目录下软件包及旧的headers