Linux基础命令(二)

萱蘇的运维日常 2024-03-27 15:12:42

本文继续对linux常用命令进行介绍。

权限管理

权限管理介绍

[root@aliyun ~]# ls -l install.log-rw-r--r--. 1 root root 24772 1 月 14 18:17 install.log

第 1 位代表文件类型。

“-”:普通文件。

“b”:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件。

“c”:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。

“d”:目录文件。Linux 中一切皆文件,所以目录也是文件的一种。

“l”:软链接文件。

“p”:管道符文件。这是一种非常少见的特殊设备文件。

“s”:套接字文件。这也是一种特殊设备文件,一些服务支持 Socket 访问,就会产生这样的文件。

第 2~4 位代表文件所有者的权限。

r:代表 read,是读取权限。

w:代表 write,是写权限。

x:代表 execute,是执行权限。

如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限。 第 5~7 位代表文件所属组的权限,同样拥有“rwx”权限。 第 8~10 位代表其他人的权限,同样拥有“rwx”权限。

基本权限作用

首先,读、写、执行权限对文件和目录的作用是不同的。

权限对文件的作用

读(r):对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行 cat、more、less、head、tail 等文件查看命令。

写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行 vim、echo 等修改文件数据的命令。注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。

执行(x):对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在 Linux 中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。

权限对目录的作用

读(r):对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行 ls 命令,查看目录下的内容了。

写(w):对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行 touch、rm、cp、mv 命令。对目录来说,写(w)权限是最高权限。 执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行 cd 命令,进入目录。

目录的可用权限

目录的可用权限其实只有以下几个。

0:任何权限都不赋予。

5:基本的目录浏览和进入权限。

7:完全权限

基本命令

chmod:修改文件或目录权限

[root@aliyun ~]# chmod [选项] 权限模式 文件名

-c 若该文件权限确实已经更改,才显示其更改动作

-f 若该文件权限无法被更改也不显示错误讯息

-v 显示权限变更的详细资料

-R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

用户身份。

u:代表所有者(user)

g:代表所属组(group)

o:代表其他人(other)

a:代表全部身份(all)

赋予方式。

+:加入权限

-:减去权限

=:设置权限

权限。

r:读取权限(read)

w:写权限(write)

x:执行权限(execute)

数字权限

4:代表“r”权限

2:代表“w”权限

1:代表“x”权限

chown:改变文件或目录的用户和用户组

[root@aliyun ~]# chown [选项] 所有者:所属组 文件名

-R 对目前目录下的所有文件与目录进行相同的变更

-c 显示所属信息变更信息

-f 若该文件拥有者无法被更改也不要显示错误

-h 只对于链接文件进行变更,而非真正指向的文件

-v 显示拥有者变更的详细资料

--help 显示辅助说明

--version 显示版本

chgrp:更改文件用户组

[root@aliyun ~]# chgrp [选项] 文件名

-c 效果类似”-v”参数,但仅回报更改的部分

-f 不显示错误信息

-h 对符号连接的文件作修改,而不更动其他任何相关文件

-R 递归处理,将指定目录下的所有文件及子目录一并处理

-v 显示指令执行过程

--reference 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同

帮助

man

[root@aliyun ~]# man [选项] 命令

-a 在所有的man帮助手册中搜索

-d 检查新加入的文件是否有错误

-f 显示给定关键字的简短描述信息

-p 指定内容时使用分页程序

-M 指定man手册搜索的路径

-w 显示文件所在位置

快捷键

q 退出

Enter 按行下翻

Space 按页下翻

b 上翻一页

/字符串 在手册页中查找字符串

help

[root@aliyun ~]# help [选项] 命令

-d 输出每个命令的简短描述

-s 输出短格式的帮助信息

-m 以man手册的格式显示帮助信息

info

[root@aliyun ~]# info [选项] 命令

-w 显示info文档的物理位置

-f 指定要访问的info文件

-n 在首个浏览过info文件中指定节点

-O 跳转至命令行选项节点

查找

whereis:显示命令及相关文件的路径

[root@aliyun ~]# whereis [选项] 命令

-b 查找二进制程序或命令

-B 从指定目录下 查找二进制程序或命令

-m 查找man手册文件

-M 从指定目录下 查找man手册文件

-s 只查找源代码文件

-S 从指定目录下 查找源代码文件

which:查找命令文件

[root@aliyun ~]# which [选项] 命令

-n 指定文件名长度(不含路径)

-p 指定文件名长度(含路径)

-w 指定输出时栏位的宽度

-V 显示版本信息

locate:快速查找文件或目录

locate命令的功能是用于快速查找文件或目录。与find命令进行全局搜索不同,locate命令是基于了数据文件(/var/lib/locatedb)进行的定点查找,由于缩小了搜索范围,因此快速快很多。Linux系统需定期执行下updatedb命令对数据库文件进行更新,然后再使用locate命令进行查找,这样才会更加准确。

[root@aliyun ~]# locate [选项] 命令

-d 指定数据库所在的目录

--help 显示帮助

--version 显示版本信息

[rootelocalhost ~]# cat /etc/updatedb.conf

PRUNE BIND MOUNTS ="yes"  #开启搜索限制,也就是让这个配置文件生效

PRUNEFS=      #在locate执行搜索时,禁止搜索这些文件系统类型

PRUNENAMES=   #在locate执行搜索时,禁止搜索带有这些扩展名的文件

PRUNEPATHS=  #在locate执行搜索时,禁止搜索这些系统目录

find:根据路径和条件搜索

[root@aliyun ~]# locate 路径 [选项] 查找内容

-name 匹配名称

-perm 匹配权限(mode为完全匹配,-mode为包含即可)

-user 匹配所有者

-group 匹配所有组

-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前)

-atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前)

-ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前)

-nouser 匹配无所有者的文件

-nogroup 匹配无所有组的文件

-newer f1 !f2 匹配比文件f1新但比f2旧的文件

-type b/d/c/p/l/f 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)

-size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)

-prune 忽略某个目录

-exec …… {}\; 后面可跟用于进一步处理搜索结果的命令

-a 逻辑与

-o 逻辑或

-not 逻辑非

grep:强大的文档搜索命令

[root@aliyun ~]# grep [选项] 查找内容 文档

-i 忽略大小写

-c 只输出匹配行的数量

-l 只列出符合匹配的文件名,不列出具体的匹配行

-n 列出所有的匹配行,显示行号

-h 查询多文件时不显示文件名

-s 不显示不存在、没有匹配文本的错误信息

-v 显示不包含匹配文本的所有行

-w 匹配整词

-x 匹配整行

-r 递归搜索

-q 禁止输出任何结果,已退出状态表示搜索是否成功

-b 打印匹配行距文件头部的偏移量,以字节为单位

-o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位

-F 匹配固定字符串的内容

-E 支持扩展的正则表达式

alias:命令别命名

[root@aliyun ~]# alisas [选项] [命令=别名]

-p 打印已经设置的命令别名

这样定义的别名是临时生效,如果需要永久生效,请放入环境变量配置文件(~/.bashrc)

压缩和解压缩

zip

[root@aliyun ~]# zip [选项] 压缩包名 源文件

-q 不显示指令执行过程

-r 递归处理,将指定目录下的所有文件和子目录一并处理

-z 替压缩文件加上注释

-v 显示指令执行过程或显示版本信息

-d 更新压缩包内文件

-n<字尾字符串> 不压缩具有特定字尾字符串的文件

gzip:不会打包

[root@aliyun ~]# gzip [选项] 压缩包名 源文件

-a 使用ASCII文字模式

-d 解开压缩文件

-f 强行压缩文件

-k 保留原文件

-l 列出压缩文件的相关信息

-c 把压缩后的文件输出到标准输出设备,不去更动原始文件

-r 递归处理,将指定目录下的所有文件及子目录一并处理

-q 不显示警告信息

tar:不会压缩

[root@aliyun ~]# tar [选项] 压缩包名 源文件

-A 新增文件到以存在的备份文件

-B 设置区块大小

-c 建立新的备份文件

-C <目录> 仅压缩指定目录里的内容或解压缩到指定目录

-d 记录文件的差别

-x 从归档文件中提取文件

-t 列出备份文件的内容

-z 通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz

-Z 通过compress指令处理备份文件

-f<备份文件> 指定备份文件

-v 显示指令执行过程

-r 添加文件到已经压缩的文件

-u 添加改变了和现有的文件到已经存在的压缩文件

-j 通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2

-v 显示操作过程

-l 文件系统边界设置

-k 保留原有文件不覆盖

-m 保留文件不被覆盖

-w 确认压缩文件的正确性

-p 保留原来的文件权限与属性

-P 使用文件名的绝对路径,不移除文件名称前的“/”号

-N <日期格式> 只将较指定日期更新的文件保存到备份文件里

-- -exclude=<范本样式> 排除符合范本样式的文件

-- -remove-files 归档/压缩之后删除源文件

bzip2

[root@aliyun ~]# bzip2 [选项] 源文件

-c 将压缩与解压缩的结果送到标准输出

-d 执行解压缩

-f bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数

-k bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数

-s 降低程序执行时内存的使用量

-t 测试.bz2压缩文件的完整性

-v 压缩或解压缩文件时,显示详细的信息

z 强制执行压缩

关机 or 重启

sync:刷新文件系统缓冲区

[root@aliyun ~]# sync [选项]

--help 显示命定详细帮助信息

--version 显示版本号

shutdown:关闭服务器的系统

[root@aliyun ~]# shutdown [选项] [时间] [警告信息]

-f 重新启动时不执行fsck

-F 重新启动时执行fsck

-h 将系统关机

-c 取消关机任务

-k 发送信息给所有用户

-n 不调用init程序进行关机

-r 将系统重启

-t 送出警告信息和删除信息之间要延迟多少秒

reboot:重启

[root@aliyun ~]# reboot [选项]

-n 直接重启系统,不保存当前资料

-w 模拟重启过程,将过程写入到日志中

-d 重启系统但不将过程写入到日志中

-f 强制重启系统

-i 关闭所有的网络服务,然后重启系统

halt:关闭服务器

[root@aliyun ~]# halt [选项]

-w 模拟关机,把过程写入到日志文件

-d 不写入日志纪录

-f 强制关机或重启

-i 关机或重启前关掉所有的网络服务

poweroff:关闭服务器且切断电源

[root@aliyun ~]# poweroff [选项]

-n 关闭操作系统时不执行sync操作

-w 不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中

-d 关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录

-f 强制关闭操作系统

-i 关闭操作系统之前关闭所有的网络接口

-h 关闭操作系统之前将系统中所有的硬件设置为备用模式

init:切换系统运行级别

[root@aliyun ~]# init [选项]

0 关机

1 单用户

2 多用户

3 完全多用户模式

5 图形界面

6 重启

常用网络相关

ipconfig:显示网络配置信息

[root@aliyun ~]# ipconfig [选项] [网卡设备]

add<地址> 设置网络设备IPv6的IP地址

del<地址> 删除网络设备IPv6的IP地址

down 关闭指定的网络设备

up 启动指定的网络设备

IP地址 指定网络设备的IP地址

ip:查看网络相关信息

centos7 默认安装,若无该命令则可执行yum install iproute -y命令安装

[root@aliyun ~]# ip [选项] [对象] [操作]

选项:

-V:显示指令版本信息;

-s:输出更详细的信息;

-f:强制使用指定的协议族;

-4:指定使用的网络层协议是IPv4协议;

-6:指定使用的网络层协议是IPv6协议;

-0:输出信息每条记录输出一行,即使内容较多也不换行显示;

-r:显示主机时,不使用IP地址,而使用主机的域名。

对象:

link:网络设备

addr:设备的协议地址

route:路由表

rule:策略路由表

neigh:arp或ndiso缓存表

tunnel:IP通道

maddr:多播地址

mroute:多播路由缓存表

monitor:监视

各个对象支持的操作:

link支持的命令:set、show

addr支持的命令:add、del、flus、show

route支持的命令:list、flush、get、add、del、change、append、replace、monitor

rule支持的命令:list、add、del、flush

neigh支持的命令:add、del、change、replace、show、flush

tunnel支持的命令:add、change、del、show

maddr支持的命令:add、del

mroute支持的命令:show

netstat:显示网络状态

[root@aliyun ~]# netstat [选项]

-a 显示所有连线中的Socket

-p 显示正在使用Socket的程序识别码和程序名称

-l 仅列出在监听的服务状态

-t 显示TCP传输协议的连线状况

-u 显示UDP传输协议的连线状况

-i显示网络界面信息表单

-r 显示路由表信息

-n 直接使用IP地址,不通过域名服务器

write:向其他用户发送信息

[root@aliyun ~]# write [选项]

用户 指定要接受信息的登录用户

登陆终端 指定接收信息的用户的登录终端

wall:发送信息给所有登录者

[root@aliyun ~]# wall message

mail:发送或接收邮件

注:安装mail 命令 yum -y install mailx,需要在/etc/mail.rc 配置发送邮箱

# 1.编辑mail.rc文件vim /etc/mail.rc# 配置/etc/mail.rc,使用外部smtp服务发送邮件。在文件的未尾添加如下数据行:set from=mr_xuansu@163.com # 发送邮件源邮箱set smtp=smtp.163.com # smtp 服务的服务商地址set smtp-auth-user=mr_xuansu@163.com # 能使用 smtp 服务的合法用户账号,与from一致set smtp-auth-password=授权码 # 在邮件服务商的网站上可以设置,类似从第三方登录邮件服务的密码。# 2.编辑host文件vim /etc/hosts# 添加以下内容IP hostname

[root@aliyun ~]# mail [选项]

-s 给邮件追加主题

-a 添加邮件附件

-b 指定密件抄送的收信人地址

-c 指定抄送的收信人地址

系统痕迹

w:显示已登录用户

[root@aliyun ~]# w [选项]

-h/--no-header 不打印头信息

-u/--no-current 当显示当前进程和cpu时间时忽略用户名

-s/--short 使用短输出格式

-f/--from 显示用户从哪登录

-o/--old-style 老式输出

-i/--ip-addr 显示IP地址而不是主机名(如果可能)

--help 显示此帮助并退出

-V/--version 显示版本信息

who:查看当前登录的用户信息

[root@aliyun ~]# who [选项]

-a 全面信息

-b 系统最近启动时间

-d 死掉的进程

-l 系统登录进程

-H 带有列标题打印用户名,终端和时间

-t 系统上次锁定时间

-u 已登录用户列表

last:显示用户历史登录情况

[root@aliyun ~]# last [选项]

-n 显示行数

-a 将来源终端信息项放置放到最后

-R 省略来源终端

-d 将IP地址转换成主机名称

-f 指定记录文件

-x 显示系统开关机等信息

lastlog:显示用户最近一次登录信息

[root@aliyun ~]# lastlog [选项]

-b <天数> 显示指定天数前的登录信息

-t <天数> 显示指定天数以来的登录信息

-u <用户名> 显示指定用户的最近登录信息

-h 显示召集令的帮助信息

lastb:记录登录失败的用户信息

[root@aliyun ~]# lastb [选项]

-a 把从何处登入系统的主机名称或ip地址显示在最后一行

-d 将IP地址转换成主机名称

-f 指定记录文件

-n 设置列出名单的显示列数

-R 不显示登入系统的主机名称或IP地址

-x 显示系统关机,重新开机,以及执行等级的改变等信息

问题反馈

若对文中有任何的疑问,或者需要帮助可以通过以下方式进行反馈

直接进行评论或者单独私聊

发送邮件到:mr_xuansu@163.com

0 阅读:16