Linux命令

54 阅读19分钟

一、基础知识

1、Linux系统的文件结构

/bin        二进制文件,系统常规命令
/boot       系统启动分区,系统启动时读取的文件
/dev        设备文件
/etc        大多数配置文件
/home       普通用户的家目录
/lib        32位函数库
/lib64      64位库
/media      手动临时挂载点
/mnt        手动临时挂载点
/opt        第三方软件安装位置
/proc       进程信息及硬件信息
/root       临时设备的默认挂载点
/sbin       系统管理命令
/srv        数据
/var        数据
/sys        内核相关信息
/tmp        临时文件
/usr        用户相关设定

2、Linux系统命令行的含义

示例:root@app00:~# 
root    //用户名,root为超级用户
@       //分隔符
app00   //主机名称
~       //当前所在目录,默认用户目录为~,会随着目录切换而变化,例如:(root@app00:/bin# ,当前位置在bin目录下)
#       //表示当前用户是超级用户,普通用户为$,例如:("yao@app00:/root$" ,表示使用用户"yao"访问/root文件夹)

3、命令的组成

实例:命令 参数名  参数值  

示例:shutdown -h now    #立刻关机

二、基础操作

1、关闭系统

(1)立刻关机  
shutdown -h now 或者 poweroff
(2)两分钟后关机  
shutdown -h 2 

# 重新启动操作系统,其中 now 表示现在
$ shutdown -r now

# 立刻关机,其中 now 表示现在
$ shutdown now

# 系统在今天的 20:25 会关机
$ shutdown 20:25

# 系统再过十分钟后自动关机
$ shutdown +10

# 取消之前指定的关机计划
$ shutdown -c

2、关闭重启

(1)立刻重启  
shutdown -r now 或者 reboot

(2)两分钟后重启  
shutdown -r 2 

3、帮助命令(help)

ifconfig --help  //查看ifconfig命令的用法

4、命令说明书(man)

man shutdown       //打开命令说明后,可按“q"退出

5、切换用户(su)

su  yao       //切换为用户“yao“,输入后回车需要输入该用户的密码
exit         //退出当前用户

三、目录操作(重点常用

1、切换目录(cd)

cd  /                      //切换到根目录 
cd  /bin                   //切换到目录下的bin目录 
cd .. /                    //切换到上一级目录,或者使用命令 cd .. 
cd ~                       //切换到home目录 
cd   -                     //切换到上次访问的目录 
cd  XX (文件夹名)          //切换到本目录下的名为XX的文件目录,如果目录不存在报错 
cd  /xxx/xx/x              //可以输入完整的路径,直接切换到目标目录,输入过程中可以使用tab键补全

2、查看目录(ls)

ls           //查看当前目录下的所有目录和文件 
ls  -a       //查看当前目录下的所有目录和文件(包括隐藏的文件) 
ls  -l      //列表查看当前目录下的所有目录和文件(列表查看,显示更多信息),与命令“II”效果一样 
ls  /bin    //查看知道目录下的所有目录和文件

3、创建目录(mkdir)

mkdir  tools          //在当前目录下创建一个名为tools的目录
mkdir /bin/tools      //在指定目录下创建一个名为tools的目录

4、删除目录与文件(rm)

rm 文件名              //删除当前目录下的文件
rm -f 文件名           //删除当前目录的的文件(不询问)
rm -r 文件夹名         //递归删除当前目录下此名的目录
rm -rf 文件夹名        //递归删除当前目录下此名的目录(不询问)
rm -rf *              //将当前目录下的所有目录和文件全部删除
rm -rf /*             //将根目录下的所有文件全部删除【慎用!相当于格式化系统】

5、拷贝目录(cp)

cp /usr/tmp/tool /opt       //将/usr/tmp目录下的tool目录复制到 /opt目录下面
cp -r /usr/tmp/tool /opt    //递归剪复制目录中所有文件和文夹

6、搜索目录(find)

find /bin -name 'a*'        //查找/bin目录下的所有以a开头的文件或者目录

7、查看当前目录(pwd)

pwd                         //显示当前位置路径

四、文件操作(重点常用)

1、新增文件(touch)

touch  a.txt     //在当前目录下创建名为a的txt文件(文件不存在),如果文件存在,将文件时间属性修改为当前系统时间

2、删除文件(rm)

rm 文件名              //删除当前目录下的文件
rm -f 文件名           //删除当前目录的的文件(不询问)

3、编辑文件(vi、vim)

vi 文件名              //打开需要编辑的文件  
	--进入后,操作界面有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)  
	命令模式  
	-刚进入文件就是命令模式,通过方向键控制光标位置,  
	-使用命令"dd"删除当前整行  
	-使用命令"/字段"进行查找  
	-按"i"在光标所在字符前开始插入  
	-按"a"在光标所在字符后开始插入  
	-按"o"在光标所在行的下面另起一新行插入  
	-按":"进入底行模式  插入模式  
	-此时可以对文件内容进行编辑,左下角会显示 "-- 插入 --""  
	-按"ESC"进入底行模式  底行模式  
	-退出编辑:      :q  
	-强制退出:      :q!  
	-保存并退出:    :wq  
	## 操作步骤示例 ##  
	1.保存文件:按"ESC" -> 输入":" -> 输入"wq",回车     //保存并退出编辑  
	2.取消操作:按"ESC" -> 输入":" -> 输入"q!",回车     //撤销本次修改并退出编辑  
	## 补充 ##  
	vim +10 filename.txt                   //打开文件并跳到第10行  
	vim -R /etc/passwd                     //以只读模式打开文件

4、查看文件(超重点)

4.1 查看文件类型

file命令:
file file_name

4.2 查看文本内容

查看全部文本内容:


cat file_name
#输出所有文本内容

cat -n file_name
#文本内容所有行加上行编号输出 

cat -b file_name
#文本内容非空行加上行编号输出

分页查看文本内容:

#1、more命令(常用的分页工具)

more file_name
2、less命令(more升级版分页工具)
less file_name 
#显示行加-N参数,less -N file_name
#更多命令及使用方法查看less --help或man less

4.3查看部分文件内容

head 命令:显示文件开头一些行的内容,默认显示文件前10行

1,查看显示文首内容 head -n [number] file_name ,显示文首多少行内容
head -n 100 file_name 
#显示文首一百行内容

#或不加-n,
head -100 file_name
#也是显示文尾100行内容 

2、输出文首最后的多少个字节
head -c 10 file_name

tail 命令:显示文件最后一些行的内容,默认显示文件后10行

1、查看显示文尾内容 tail -n [number] file_name ,显示文尾多少行内容
tail -n 100 file_name 
#显示文尾一百行内容
#或不加-n,tail -100 file_name也是显示文尾100行内容

2、当文件增长时输出追加的数据,比如日志时时生成,(crtl+c终止显示)
tail -f log_file 

3、加-f参数显示追加是数据时可以与-s参数配置,睡眠几秒在进行追加显示
tail -f -s 10 log_file 
#查看日志内容,10秒刷新一次 

4、输出文尾最后的多少个字节
tail -c 10 file_name

五、文件权限

1、权限说明

文件权限简介:'r' 代表可读(4),'w' 代表可写(2),'x' 代表执行权限(1),括号内代表"8421法" 
##文件权限信息示例:-rwxrw-r--  

-第一位:'-'就代表是文件,'d'代表是文件夹  
-第一组三位:拥有者的权限  
-第二组三位:拥有者所在的组,组员的权限  
-第三组三位:代表的是其他用户的权限

在这里插入图片描述

2、文件权限

所谓的文件权限,是指对文件访问权限,包括对文件的读、写、删除、执行操作。Linux是一个多用户操作系统,它运行多个用户同时登陆和工作,因此,Linux将一个文件或者目录与一个用户与组联系起来的。

在这里插入图片描述

普通授权    chmod +x a.txt    
8421法     chmod 777 a.txt     //1+2+4=7,"7"说明授予所有权限
# 修改文件|目录的拥有者
chown 用户名 文件名|目录名
# 递归修改文件|目录的组
chgrp -R 组名 文件名|目录名
# 递归修改文件权限
chmod -R 755 文件名|目录名

六、打包、解压、安装

1、打包/解包

tar是linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件

tar的命令格式如下:

1、打包文件:

tar -cvf 打包文件.tar 被打包文件/路径
tar  -cvf  test.tar  1.txt  2.txt  3.txt 

zip -r 名称.zip 被压缩文件  

2、解包文件

tar -xvf 打包文件.tarunzip 名称.zip

tar选项说明

选项含义
c生成档案文件,创建打包文件
x解开档案文件
v列出归档接档的详细过程,显示进度
f指定档案文件名称,f 后面一定是.tar文件,所以必须放选项最后

注意:f 选项必须放在最后,其他选项可以随意

2、压缩/解压缩

(1)gzip tar 与 gzip 命令结合可以使用实现文件打包和压缩 tar只复杂打包文件,但不压缩 用gzip压缩tar打包后的文件,其扩展名一般用xxx.tar.gz 在tar 命令中有一个选项-z 可以调用gzip,从而可以方便的实现压缩和解压缩的功能 命令格式:

# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...
tar  -zcvf  test.tar.gz  1.txt  2.txt  3.txt 

# 解压缩文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径     

unzip test.zip             //解压*.zip文件  
unzip -l test.zip          //查看*.zip文件的内容 

-C : 解压缩到指定目录,注意:要解压缩的目录必须存在

3、软件安装

apt是advanced Packaging Tool,是Linux下的一款安装包管理工具。 可以在终端中方便的安装、卸载和更新软件包。 (1)安装软件: sudo apt install 软件包 (2)卸载软件: sudo apt remove 软件名 (3)更新已安装的包: sudo apt upgrade 查看当前进程排名的软件: sudo apt install htop

七、软链接与硬链接

软连接

1、概念

类同与windos的快捷方式,给文件创建一个快速的访问路径,它依赖于原文件,与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块。

2.特性

  • 可对不存在的目录和文件创建软链接。

  • 可以对存在的文件或目录建软链接。

  • 可以跨文件系统创建软链接。

  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软链接被称为死链接(即dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

  • 软链接创建时原文件的路径指向使用绝对路径较好,相对路径的话原文件移除后可能会成为死链接。

    3.软链接的创建

 ln  -s   原文件  链接名称

例如:

在这里插入图片描述

硬链接

1、概念

硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。

2.特性

  • 只能对已存在的文件进行创建(必须事先要有一个原始文件)。

  • 硬链接必须在同一个文件系统里创建。

  • 不能对目录进行创建。

    3.硬链接的创建

ln  原文件  链接名称

例如:

在这里插入图片描述

八、文件传输

rz、sz 命令

使用 rz、sz 命令可以实现 linux 和 windows 之间的文件传输,但要求在 windows 客户端要安装 Xshell 远程连接工具。rz 命令和 sz 命令是一对上传与下载的指令。它们的软件包名为 lrzsz。

rz 中的 r 意为 received (接收),即将文件从win本地上传到服务器,为服务器接收文件。

sz 中的 s 意为 send (发送),输入sz时,意为服务器要发送文件,既从服务器发送文件到本地,或是说本地从服务器上下载文件。

# linux下的lrzsz包安装命令
yum install lrzsz -y    # redHat、centos、Fedora系统下的安装命令
dpkg -i lrzsz -y        # ubuntu系统下的安装命令
# sz、rz 命令的使用方法
rz 回车后会弹出windows窗口,然后选择文件。   # 将文件从win本地上传到服务器
sz 文件名                      # 从服务器发送文件到win本地# 注意:不论是send还是received,动作都是在服务器上发起的。

sftp 命令

连接远程主机,上传或下载文件。

#语法格式: sftp 远程主机#作用:  连接远程主机,上传或下载文件    # 示例: (需连接到远程主机)    
sftp 172.24.5.12   # 连接到远程主机
get a.txt          # 下载a.txt文件    
put a.txt          # 上传a.txt到远程主机

scp 命令

scp 命令能够将不同主机的文件进行相互传输,使用简单方便。此方法会加密传输文件,安全性提升,但是相对来说速度会慢些。

#语法格式: scp 远程主机账号@远程IP地址 本地目录#作用:  登录远程主机进行拷贝文件或目录    # 示例:         
scp root@192.168.12.11:/soft/test.tar.gz /tools/   # 将远程主机目录下的/soft/test.tar.gz 拷贝到本地目录下的tools/下        
scp root@192.168.12.11:/soft/ /tools/              # 将远程主机目录soft 拷贝到本地目录的tools/下。

rcp 命令

#语法格式: scp 主机1 主机2#作用:  远程主机间的文件或目录相互拷贝    # 示例:         
rcp test 192.168.128.169:/test           #  拷贝当前目录下的test 到192.168.128.169的/test目录下        
rcp root@192.168.128.169:./test  /test   #  复制远程目录到本地的/test下

九、系统管理

1、防火墙操作

在这里插入图片描述

service iptables status      //查看iptables服务的状态  
service iptables start       //开启iptables服务  
service iptables stop        //停止iptables服务  
service iptables restart     //重启iptables服务  
chkconfig iptables off       //关闭iptables服务的开机自启动  
chkconfig iptables on        //开启iptables服务的开机自启动  
##centos7 防火墙操作  
systemctl status firewalld.service     //查看防火墙状态  
systemctl stop firewalld.service       //关闭运行的防火墙
systemctl stop firewalld.service       //开启防火墙  
systemctl disable firewalld.service    //永久禁止防火墙服务

2、修改主机名(CentOS 7)

hostnamectl set-hostname 主机名

3、查看网络

ifconfig

# 查看网卡配置信息
$ ifconfig
# 查看网卡对应的 IP 地址
$ ifconfig | grep inet

4、修改IP

修改网络配置文件,文件地址:/etc/sysconfig/network-scripts/ifcfg-eth0  
------------------------------------------------  
主要修改以下配置:    
TYPE=Ethernet               //网络类型  
BOOTPROTO=static            //静态IP  
DEVICE=ens00                //网卡名  
IPADDR=192.168.1.100        //设置的IP  
NETMASK=255.255.255.0       //子网掩码  
GATEWAY=192.168.1.1         //网关  
DNS1=192.168.1.1            //DNS  
DNS2=8.8.8.8                //备用DNS  
ONBOOT=yes                  //系统启动时启动此设置  
-------------------------------------------------  
修改保存以后使用命令重启网卡:service network restart

5、配置映射

修改文件: vi /etc/hosts  
在文件最后添加映射地址,示例如下:   
192.168.1.101  node1   
192.168.1.102  node2   
192.168.1.103  node3  
配置好以后保存退出,输入命令:ping node1 ,可见实际 ping 的是 192.168.1.101。

6、端口操作

在Linux中,可以使用以下命令来查看端口号:
1. netstat命令    
	netstat -tunlp      # 查看所有端口号和对应的进程信息    
	netstat -tunlp | grep 端口号    # 查看指定端口号对应的进程信息 
2. lsof命令    
	lsof -i:端口号       # 查看指定端口号对应的进程信息 
3. ss命令    
	ss -tunlp       # 查看所有端口号和对应的进程信息
	ss -tunlp | grep 端口号          # 查看指定端口号对应的进程信息  
4、可以使用Linux命令netstat来查询端口号。具体命令如下:
	netstat -ap | grep <进程名或进程ID>
#其中,-a表示显示所有连接和监听端口,-p表示显示进程ID和进程名,grep命令用于过滤出包含指定进程名或进程ID的行。执行该命令后,会显示该进程所绑定或监听的端口号。举个例子,如果要查询进程名为nginx的进程所绑定或监听的端口号,可以执行以下命令:
	netstat -ap | grep nginx 

5、开放端口命令
#使用firewall命令开放端口,firewall-cmd --add-port=<端口号>/<协议> --permanent;
#以3306为例
先执行:   
	firewall-cmd --add-port=3306/tcp --permanent;
在执行:   
	firewall-cmd --reload   #刷新 

6、关闭端口命令先执行:firewall-cmd --remove-port=3306/tcp --permanent;在执行:firewall-cmd --reload

7、查看进程

静态: 
ps aux #查看进程使用情况
ps aux | less # 查看进程使用情况,考虑到显示过多,使用分管符和less命令查看
ps aux --sort CPU #查看进程使用情况,并按照CPU的使用率升序排列
ps aux --sort -CPU #查看进程使用情况,并按照CPU的使用率降序排列
ps aux --sort rss #查看进程使用情况,并按照内存的使用升序排列
ps aux --sort -rss  #查看进程使用情况,并按照内存的使用降序排列
ps -ef | grep XXX #查看指定的进程是否开启
ps axo user,pid,ppid……  #查看进程,并且只查看后面列举出的信息  

动态:
top -d 1
top -p 100
top -n 3 >123.txt
top -u nginx   

-d 表示刷新的时间间隔,单位为s
-p 表示查看指定PID的进程
-u 表示查看指定用户的进程
-n 表示top刷新指定次数后退

8、结束进程

kill pid       //杀死该pid的进程
kill -9 pid    //强制杀死该进程 

9、查看链接

ping IP        //查看与此IP地址的连接情况
netstat -an    //查看当前系统端口
netstat -an | grep 8080     //查看指定端口

10、快速清屏

ctrl+l        //清屏,往上翻可以查看历史操作

11、远程主机

ssh IP       //远程主机,需要输入用户名和密码

12、ping一般用于检测当前计算机到目标计算机之间的网络 是否通畅,数值越大,速度越慢

ping一般用于检测当前计算机到目标计算机之间的网络 是否通畅,数值越大,速度越慢
    # 检测到目标主机是否连接正常
    $ ping IP地址
    # 检测本地网卡工作正常
    $ ping 127.0.0.1

十、du命令

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的.

命令格式:

du [选项][文件]

命令功能:显示每个文件和目录的磁盘使用空间。

命令参数:

-a或-all  显示目录中个别文件的大小。    

-b或-bytes  显示目录或文件大小时,以byte为单位。 

-c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 

-k或--kilobytes  以KB(1024bytes)为单位输出。 

-m或--megabytes  以MB为单位输出。    

-s或--summarize  仅显示总计,只列出最后加总的值。 

-h或--human-readable  以K,M,G为单位,提高信息的可读性。

-x或--one-file-xystem  以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。  

-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。    

-S或--separate-dirs   显示个别目录的大小时,并不含其子目录的大小。  

-X<文件>或--exclude-from=<文件>  在<文件>指定目录或文件。   

--exclude=<目录或文件>         略过指定的目录或文件。   

-D或--dereference-args   显示指定符号链接的源文件大小。  

-H或--si  与-h参数相同,但是K,M,G是以1000为换算单位。    

-l或--count-links   重复计算硬件链接的文件。

实例1:显示目录或者文件所占空间

[root@localhost test]# du  
    608     ./test6 
    308     ./test4 
    4       ./scf/lib 
    4       ./scf/service/deploy/product
    4       ./scf/service/deploy/info 
    12      ./scf/service/deploy 
    16      ./scf/service 
    4       ./scf/doc 
    4       ./scf/bin 
    32      ./scf 
    8       ./test3 
    1288    . 
    [root@localhost test]#

说明:只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的1288为当前目录的总大小

实例2:显示指定文件所占空间

[root@localhost test]# du log2012.log  

300     log2012.log 

[root@localhost test]#

实例3:查看指定目录的所占空间

[root@localhost test]# du scf 
4       scf/lib 

4       scf/service/deploy/product 

4       scf/service/deploy/info 

12      scf/service/deploy 

16      scf/service 

4       scf/doc 

4       scf/bin 

32      scf 
[root@localhost test]#

实例4:显示多个文件所占空间

[root@localhost test]# du log30.tar.gz log31.tar.gz  
4       log30.tar.gz 
4       log31.tar.gz 
[root@localhost test]#

实例5:只显示总和的大小

[root@localhost test]# du -s 
1288    . 
[root@localhost test]# du -s scf 
32      scf 
[root@localhost test]# cd .. 
[root@localhost soft]# du -s test 
1288    test 
[root@localhost soft]#—
———————————————

实例6:方便阅读的格式显示

[root@localhost soft]# du -h test 
608K    test/test6 
308K    test/test4 
4.0K    test/scf/lib 
4.0K    test/scf/service/deploy/product 
4.0K    test/scf/service/deploy/info 
12K     test/scf/service/deploy 
16K     test/scf/service 
4.0K    test/scf/doc 
4.0K    test/scf/bin 
32K     test/scf 
8.0K    test/test3 
1.3M    test 
[root@localhost soft]#

实例7:文件和目录都显示

[root@localhost soft]# du -ah test 
4.0K    test/log31.tar.gz 
4.0K    test/test13.tar.gz 
0       test/linklog.log 
0       test/test6/log2014.log 
300K    test/test6/linklog.log 
0       test/test6/log2015.log 
4.0K    test/test6/log2013.log 
300K    test/test6/log2012.log 
0       test/test6/log2017.log 
0       test/test6/log2016.log 
608K    test/test6 
0       test/log2015.log 
0       test/test4/log2014.log 
4.0K    test/test4/log2013.log 
300K    test/test4/log2012.log 
308K    test/test4 
4.0K    test/scf/lib 
4.0K    test/scf/service/deploy/product 
4.0K    test/scf/service/deploy/info 
12K     test/scf/service/deploy 
16K     test/scf/service 
4.0K    test/scf/doc 
4.0K    test/scf/bin 
32K     test/scf 
4.0K    test/log2013.log 
300K    test/log2012.log 
0       test/log2017.log 
0       test/log2016.log 
4.0K    test/log30.tar.gz 
4.0K    test/log.tar.bz2 
4.0K    test/log.tar.gz 
0       test/test3/log2014.log 
4.0K    test/test3/log2013.log 
8.0K    test/test3 
4.0K    test/scf.tar.gz 
1.3M    test 
[root@localhost soft]#

实例8:显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和

[root@localhost test]# du -c log30.tar.gz log31.tar.gz  
4       log30.tar.gz 
4       log31.tar.gz 
8       总计 8
[root@localhost test]#

说明:加上-c选项后,du不仅显示两个目录各自占用磁盘空间的大小,还在最后一行统计它们的总和

实例9:按照空间大小排序

[root@localhost test]# du|sort -nr|more 
1288    . 
608     ./test6 
308     ./test4 
32      ./scf 
16      ./scf/service 
12      ./scf/service/deploy 
8       ./test3 
4       ./scf/service/deploy/product 
4       ./scf/service/deploy/info 
4       ./scf/lib 
4       ./scf/doc 
4       ./scf/bin 
[root@localhost test]#

实例10:输出当前目录下各个子目录所使用的空间

[root@localhost test]# du -h --max-depth=1 
608K    ./test6 
308K    ./test4 
32K     ./scf 
8.0K    ./test3 
1.3M    . 
[root@localhost test]#

十一、其他常用命令

1、find

find . -name "*.c"     //将目前目录及其子目录下所有延伸档名是 c 的文件列出来
find . -type f         //将目前目录其其下子目录中所有一般文件列出
find . -ctime -20      //将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find /var/log -type f -mtime +7 -ok rm {} \;     //查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
find . -type f -perm 644 -exec ls -l {} \;       //查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
find / -type f -size 0 -exec ls -l {} \;         //为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径

2、whereis

whereis ls             //将和ls文件相关的文件都查找出来

3、which

说明:which指令会在环境变量$PATH设置的目录里查找符合条件的文件。  
which bash             //查看指令"bash"的绝对路径  
/etc/passwd 是用于保存用户信息的文件
/usr/bin/passwd 是用于修改用户密码的程序
which 命令可以查看执行命令所在位置,例如: 
which ls
# 输出
# /bin/ls
which useradd
# 输出
# /usr/sbin/useradd

4、sudo

说明:sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。需要输入自己账户密码。  使用权限:在 /etc/sudoers 中有出现的使用者  
sudo -l                              //列出目前的权限  
$ sudo -u yao vi ~www/index.html    //以 yao 用户身份编辑  home 目录下www目录中的 index.html 文件

5、grep

grep -i "the" demo_file              //在文件中查找字符串(不区分大小写)  
grep -A 3 -i "example" demo_text     //输出成功匹配的行,以及该行之后的三行  
grep -r "ramesh" *                   //在一个文件夹中递归查询包含指定字符串的文件

6、service

说明:service命令用于运行System V init脚本,这些脚本一般位于/etc/init.d文件下,这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径  
service ssh status      //查看服务状态   
service --status-all    //查看所有服务状态   
service ssh restart     //重启服务 

7、free

说明:这个命令用于显示系统当前内存的使用情况,包括已用内存、可用内存和交换内存的情况   
free -g            //以G为单位输出内存的使用量,-g为GB,-m为MB,-k为KB,-b为字节   
free -t            //查看所有内存的汇总

8、top

top               //显示当前系统中占用资源最多的一些进程, shift+m 按照内存大小查看

9、df

说明:显示文件系统的磁盘使用情况  
df -h            //一种易看的显示

10、mount

mount /dev/sdb1 /u01              //挂载一个文件系统,需要先创建一个目录,然后将这个文件系统挂载到这个目录上  dev/sdb1 /u01 ext2 defaults 0 2   //添加到fstab中进行自动挂载,这样任何时候系统重启的时候,文件系统都会被加载 

11、uname

说明:uname可以显示一些重要的系统信息,例如内核名称、主机名、内核版本号、处理器类型之类的信息   
uname -a

12、yum

说明:安装插件命令  
yum install httpd      //使用yum安装apache   
yum update httpd       //更新apache   
yum remove httpd       //卸载/删除apache 

13、rpm

说明:插件安装命令  
rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm      //使用rpm文件安装apache   
rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm      //使用rpm更新apache   
rpm -ev httpd                                 //卸载/删除apache 

14、date

date -s "01/31/2010 23:59:53"   ///设置系统时间

15、wget

说明:使用wget从网上下载软件、音乐、视频   
示例:wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz  
//下载文件并以指定的文件名保存文件  
wget -O nagios.tar.gz http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

17、ftp

ftp IP/hostname    //访问ftp服务器   
mls *.html -       //显示远程主机上文件列表

18、scp

scp /opt/data.txt  192.168.1.101:/opt/    //将本地opt目录下的data文件发送到192.168.1.101服务器的opt目录下

十二、用户权限相关命令

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

常见面试题

在Linux系统中,以文件方式访问设备。

在Linux系统中,设备通常以文件的形式出现在文件系统中,这被称为“设备文件”。

这些设备文件通常位于/dev目录下,代表了系统中的各种设备,如硬盘、磁盘分区、终端、键盘等。 通过这些设备文件,用户和应用程序可以像操作普通文件一样来访问设备,例如读取、写入或执行特定操作。

这种方式使得Linux系统的设备管理更为灵活和统一。

例如,一个磁盘分区的设备文件可能被命名为/dev/sda1,一个终端设备的设备文件可能被命>名为/dev/tty1。通过这些设备文件,系统可以识别和管理与之相关的设备。

在Linux内核引导时,从文件( /etc/fstab )中读取要自动加载的文件系统。

在Linux内核引导时,会从文件(/etc/fstab)中读取要自动加载的文件系统。

这个文件的作用是存放文件系统的静态信息,包括文件系统的设备、挂载点、文件系统类型以及挂载选项等。

系统在启动时会自动读取这个文件,并将其中指定的文件系统挂载到指定的目录。

你可以使用以下命令查看/etc/fstab文件的内容:

cat /etc/fstab 

如果你需要修改/etc/fstab文件,可以使用以下命令:

vi /etc/fstab 

在打开的编辑器中,你可以根据需要修改文件系统的设备、挂载点、文件系统类型和挂载选项等信息。 修改完成后保存并退出编辑器即可。

在Linux系统中,文件链接分为:( 硬链接 )和( 符号/软 )链接。

在Linux系统中,文件链接分为硬链接和符号/软链接。 硬链接是指通过索引节点来创建的链接,它们与原始文件共享相同的索引节点和数据块。 硬链接可以看作是原始文件的另一个名称,删除任何一个硬链接都不会影响其他硬链接或原始文件的可用性。 创建硬链接的命令是ln,默认情况下,ln命令会创建硬链接。例如:

ln file1 file2 

这将在当前目录下创建一个名为file2的硬链接,它与file1指向相同的文件。 符号/软链接是一个特殊的文件,它包含了指向另一个文件或目录的路径。 软链接类似于Windows的快捷方式。 软链接可以跨越文件系统边界,可以链接到不存在的文件或目录。 删除原始文件后,软链接将变为无效。创建软链接的命令是ln -s,例如:

ln -s file1 file2 

这将在当前目录下创建一个名为file2的软链接,它指向file1。 总结起来,硬链接是原始文件的另一个名称,而软链接是一个指向原始文件的特殊文件

文件权限

某文件的权限为:drw-r--r--,用数值形式表示该权限为:( 644 ),该文件类型是( 目录 )。 某文件的权限为:drw-r–r–,用数值形式表示该权限为:644,该文件类型是目录。

以下是一个演示如何将文件权限转换为数值形式的示例:

import stat 
 #文件权限字符串 
permission_str = "drw-r--r--" 
 #将权限字符串转换为数值形式 
permission_num = stat.filemode(permission_str) 
 #输出数值形式的权限
print("数值形式的权限:", permission_num)  # 输出:644 

该示例使用了Python的stat模块中的filemode函数,该函数可以将文件权限字符串转换为数值形式

grep命令

在文档中搜寻关键词的命令是( grep )。 是的,你可以使用grep命令在文档中搜寻关键词。 grep是一个强大的文本搜索工具,它可以使用正则表达式搜索文本,并将匹配的行打印出来。 以下是grep命令的基本语法:

# grep [选项] '搜寻字符串' 文件名 
#其中,选项可以是以下之一: 
-a:将二进制文件以文本文件的方式搜索。
-c:只输出匹配行的计数。- -i:忽略大小写。
-n:显示匹配行及其行号。
-v:反转匹配,只显示不匹配的行。
–color=auto:高亮显示匹配的字符串。

例如,如果你想在文件example.txt中搜索关键词"hello",可以使用以下命令:

grep 'hello' example.txt 

这将输出所有包含关键词"hello"的行。

chown命令

改变文件的所有者的命令是( chown ) chown命令用于修改文件的所有者和文件关联组。

它是change owner的缩写。下面是chown命令的语法和示例: 语法:

chown 新所有者名或id 待修改的文件 

示例:

chown wuqi test.txt 

以上示例将test.txt文件的所有者修改为wuqi。

请注意,你需要具有足够的权限才能使用chown命令来修改文件的所有者。

分区

安装Linux系统对硬盘分区时,必须有两种分区类型:( 文件系统分区 ) 和( 交换分区 )。

在安装Linux系统时,必须有两种分区类型:文件系统分区和交换分区。

  • 文件系统分区

文件系统分区是用于存储操作系统和用户数据的分区。 它包含了根分区(也称为root分区),所有的系统文件和目录都存储在这个分区内。 文件系统分区可以使用不同的文件系统格式,如ext4、NTFS等。

  • 交换分区

交换分区是一种特殊的分区,用于将部分内存中的数据换出来,以腾出内存空间用于其他需求。 当系统的物理内存快要用完时,操作系统会将一部分数据存储到交换分区中。交换分区可以提高系统的性能和稳定性。

以下是一个演示如何在Linux系统中进行硬盘分区的例子:

#打开终端,并以root用户身份登录。 
#使用fdisk命令查看当前的硬盘分区情况: 

fdisk -l 

#使用fdisk命令对硬盘进行分区: 

fdisk /dev/sda 

#这里的/dev/sda是你要进行分区的硬盘设备名,可以根据实际情况进行修改。 
#根据提示,使用n命令创建新分区,并选择分区类型和大小。 
#使用w命令保存并退出fdisk。 
#格式化分区: 

mkfs.ext4 /dev/sda1 

#这里的/dev/sda1是你创建的文件系统分区的设备名,可以根据实际情况进行修改。 
#创建交换分区:

mkswap /dev/sda2 

#这里的/dev/sda2是你创建的交换分区的设备名,可以根据实际情况进行修改。 
#启用交换分区: 

swapon /dev/sda2 

#编辑/etc/fstab文件,将文件系统分区和交换分区添加到挂载列表中: 

nano /etc/fstab 

#在文件末尾添加以下内容:

/dev/sda1   /mnt   ext4   defaults   0   0/dev/sda2   none   swap   sw         0   0 

#这里的/mnt是文件系统分区的挂载点,可以根据实际情况进行修改。 
#保存并退出/etc/fstab文件。 
#重新挂载分区: 
mount -a  

Linux中的临时文件一般放在( /tmp )目录中。

用户ID

Linux中每个用户都具有一个唯一的身份标识,称做( 用户ID /UID),以区别于其它用户。

可以用( ) 命令查看当前登录用户的该标识。

在Linux中,每个用户都具有一个唯一的身份标识,称为用户ID(UID)。UID是一个数字,用于区分不同的用户。每个用户都有一个与之关联的UID,通过UID可以确定用户的身份和权限。

要查看当前用户的UID,可以使用以下命令:

id -u 

该命令将输出当前用户的UID。

要查看所有用户的UID列表,可以使用以下命令:

cut -d: -f1 /etc/passwd 

该命令将从/etc/passwd文件中提取出所有用户的用户名,并输出其对应的UID

文件路径

在确定操作对象的位置时,我们可以使用相对路径绝对路径来表示文件的位置。

  • 相对路径是相对于当前工作目录的路径。它不包含根目录,而是从当前目录开始的路径。

相对路径可以使用".“表示当前目录, ”…"表示上一级目录。

例如,如果当前工作目录是/home/user/,而文件位于/home/user/documents/file.txt,则相对路径可以表示为documents/file.txt。

  • 绝对路径是从根目录开始的完整路径。它包含了存储文件的各级文件夹。

在Windows中,使用倒斜杠来分隔路径,在Mac OS和Linux中使用正斜杠/作为路径分隔符。

例如,文件位于/home/user/documents/file.txt,则绝对路径就是/home/user/documents/file.txt。

  • 综合

使用相对路径可以更方便地定位文件,特别是当文件与当前工作目录相关时。

而使用绝对路径可以确保准确地找到文件,无论当前工作目录在哪里。

面试小题

  • 1、请说明用户的创建和可以对用户进行哪些操作,再说明与用户设置相关的配置文件有哪些?

用户的创建和操作:

  1. 创建用户:可以使用useradd命令来创建用户,例如useradd username,其中username是要创建的用户名。

  2. 删除用户:可以使用userdel命令来删除用户,例如userdel username,其中username是要删除的用户名。

  3. 修改用户信息:可以使用usermod命令来修改用户的信息,例如usermod -c "New Comment" username,其中-c选项用于修改用户的注释信息。

  4. 修改用户密码:可以使用passwd命令来修改用户的密码,例如passwd username,系统会提示输入新的密码。与用户设置相关的配置文件:

  5. /etc/passwd文件:该文件记录了系统中所有用户的基本信息,包括用户名、用户ID、用户组ID、用户主目录等。

  6. /etc/shadow文件:该文件存储了用户的加密密码和密码过期信息。

  7. /etc/group文件:该文件记录了系统中所有用户组的信息,包括用户组名、用户组ID和用户组成员。

  8. 用户主目录下的配置文件:在用户的主目录下,可以创建一些配置文件来定制用户的环境,例如.bash_profile、.bashrc、.bash_logout等。这些文件可以用来设置用户的环境变量、别名、自定义命令等。

  • 2、请说明chmod命令的作用和使用格式,并说明其每个参数的作用?

chmod命令用于改变文件或目录的访问权限。它允许用户控制文件或目录的访问权限。

chmod命令有两种使用格式:文字设定法和数字设定法。

文字设定法: chmod [who] [+|-|=] [mode] 文件名

[who]:表示要修改权限的对象,可以是以下之一:

u:文件或目录的属主
g:文件或目录的所属组
o:其他用户
a:所有用户(u、g和o的组合)
[+|-|=]:表示要添加、删除或设置权限。+表示添加权限,-表示删除权限,=表示设置权限。
[mode]:表示要设置的权限模式,可以是以下之一:
r:可读权限
w:可写权限
x:可执行权限

数字设定法: chmod [mode] 文件名

[mode]:表示要设置的权限模式,是一个由0到7的八进制数组成的三位数。每一位数表示一种权限,分别对应可读、可写和可执行权限。0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限。将这些数字相加可以得到所需的权限。

示例:

chmod u+rwx,g+rw,o+r file.txt 

以上命令将给文件file.txt的属主添加可读、可写和可执行权限,给所属组添加可读和可写权限,给其他用户添加可读权限

  • 3、vi 编辑器有哪几种工作模式?如何在这几种工作模式之间转换?

答:Vi的工作模式有三种:命令模式、输入模式、末行模式。3分

在命令模式下输入a、A、i、I、o、O等命令之一可以进入输入模式,

在输入模式下按Esc键回到命令模式;

在命令模式下输入:进入末行模式 末行命令执行完后回到命令模式。

命令行模式(Command Mode):

移动光标: h:向左移动光标 j:向下移动光标 k:向上移动光标 l:向右移动光标 w:向前移动一个单词 b:向后移动一个单词 gg:跳转到文件开头 G:跳转到文件结尾

删除/修改: x:删除光标处的字符 dw:删除光标所在位置至下一个单词结尾 dd:删除一行 u:撤销上一步操作 复制/粘贴: yy:复制当前行 p:粘贴在光标之后 查找/替换: /pattern:向前搜索指定文本模式 ?pattern:向后搜索指定文本模式 :s/pattern/replacement/g:替换当前行匹配项 :%s/pattern/replacement/g:替换整个文件内的匹配项

退出与保存: :q:如果未做任何修改,则退出vi :q!:强制退出并放弃所有修改 :w:保存当前文件但不退出 :wq:保存并退出 ZZ:保存并退出(等同于:wq)

插入模式(Insert Mode):

进入插入模式: i:在光标前开始插入文本 a:在光标后开始插入文本 o:在当前行下方新建一行并进入插入模式 O:在当前行上方新建一行并进入插入模式 退出插入模式: 按下Esc键返回命令行模式

底行模式(Last Line Mode): 除了上述在命令行模式下的命令外,在命令行模式下按下冒号:进入底行模式,可以执行更多高级命令:

:w filename:另存为指定文件名 :e!:放弃所有更改并重新加载文件 :set nu:显示行号 :help或:h:查看帮助文档 :source ~/.vimrc:重新加载用户的.vimrc配置文件

  • 4、Ls 命令执行什么功能?可以带哪些参数,有什么区别?(5分)

ls 执行的功能:列出指定目录中的目录,以及文件

哪些参数以及区别:a 所有文件l 详细信息,包括大小字节数,可读可写可执行的权限 写权限 x:可执行权限


数字设定法: `chmod [mode] 文件名` 

```bash
[mode]:表示要设置的权限模式,是一个由07的八进制数组成的三位数。每一位数表示一种权限,分别对应可读、可写和可执行权限。0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限。将这些数字相加可以得到所需的权限。

示例:

chmod u+rwx,g+rw,o+r file.txt 

以上命令将给文件file.txt的属主添加可读、可写和可执行权限,给所属组添加可读和可写权限,给其他用户添加可读权限

  • 3、vi 编辑器有哪几种工作模式?如何在这几种工作模式之间转换?

答:Vi的工作模式有三种:命令模式、输入模式、末行模式。3分

在命令模式下输入a、A、i、I、o、O等命令之一可以进入输入模式,

在输入模式下按Esc键回到命令模式;

在命令模式下输入:进入末行模式 末行命令执行完后回到命令模式。

命令行模式(Command Mode):

移动光标: h:向左移动光标 j:向下移动光标 k:向上移动光标 l:向右移动光标 w:向前移动一个单词 b:向后移动一个单词 gg:跳转到文件开头 G:跳转到文件结尾

删除/修改: x:删除光标处的字符 dw:删除光标所在位置至下一个单词结尾 dd:删除一行 u:撤销上一步操作 复制/粘贴: yy:复制当前行 p:粘贴在光标之后 查找/替换: /pattern:向前搜索指定文本模式 ?pattern:向后搜索指定文本模式 :s/pattern/replacement/g:替换当前行匹配项 :%s/pattern/replacement/g:替换整个文件内的匹配项

退出与保存: :q:如果未做任何修改,则退出vi :q!:强制退出并放弃所有修改 :w:保存当前文件但不退出 :wq:保存并退出 ZZ:保存并退出(等同于:wq)

插入模式(Insert Mode):

进入插入模式: i:在光标前开始插入文本 a:在光标后开始插入文本 o:在当前行下方新建一行并进入插入模式 O:在当前行上方新建一行并进入插入模式 退出插入模式: 按下Esc键返回命令行模式

底行模式(Last Line Mode): 除了上述在命令行模式下的命令外,在命令行模式下按下冒号:进入底行模式,可以执行更多高级命令:

:w filename:另存为指定文件名 :e!:放弃所有更改并重新加载文件 :set nu:显示行号 :help或:h:查看帮助文档 :source ~/.vimrc:重新加载用户的.vimrc配置文件

  • 4、Ls 命令执行什么功能?可以带哪些参数,有什么区别?(5分)

ls 执行的功能:列出指定目录中的目录,以及文件

哪些参数以及区别:a 所有文件l 详细信息,包括大小字节数,可读可写可执行的权限