目录
1.linux文件和目录的基本操作
01.
#查看自己当前所在的路径。
pwd
02.
#查看当前目录有哪些文件。
ls
例子1:ls # 查看当前目录有哪些文件。
例子2:ls -a #查看隐藏文件。
例子3:ls -l #可以查看文件的具体信息。
03.
#创建一个新的文件 。
touch
例子1:touch 1.txt #创建1.txt这个文件。
例子2:touch {1..8}.txt #创建1.txt->8.txt这8个文件。
例子3:touch .2.txt #创建2.txt这个隐藏文件
例子4:touch /root/3.txt #在根目录的root目录下创建3.txt这个文件
04.
#更改文件名称,也可以移动文件
mv
例子1: mv 1.txt 2.txt #把1.txt名字改成2.txt。
例子2:mv 1.txt /root/ #把1.txt这个文件移动到root目录下
05.
# 删除文件。
rm
例子1:rm 1.txt #删除1.txt这个文件
例子2:rm -f 1.txt #强制1.txt删除不提醒。
例子3:rm -r jerry #删除jerry这个目录
06.
# 拷贝文件。
cp
例子1:cp 1.txt 2.txt #拷贝1份1.txt这个文件将其命名为2.txt
例子2:
07.
# 创建目录
mkdir
例子1:mkdir jerry #创建jerry这个空目录
例子2:
[root@localhost jerry]# mkdir -p tom.1/tom.2/tom.3 #递归创建目录
08.
#切换目录
cd
例子1:cd jerry #进入jerry这个目录下
例子2:cd /root #进入根目录下的root目录下
例子3:
cd .. #切换到上一层目录
cd ../.. # 切换到上两层目录
09.
#查询历史指令
history
10.
#查看文件内容
cat
例子1:
cat 1.txt #查看1.txt这个文件的内容
cat -n 2.txt #查看2.txt这个文件的内容并显示行数
tac(#都与cat相似这里就举一个例子)
例子1:
tail 1.txt #查看1.txt这个文件的内容(从后往前显示)
11.
#查看文件中的前(后)几行
head
例子1:head 1.txt #查看文件的前十行(默认是文件的前十行)
例子2:head -n 5 1.txt 或 head -5 #查看1.txt这个文件的前五行
tail(#都与head相似)
例子1:tail 1.txt #查看文件的后十行(默认是文件的后十行)
2.linux管道
linux管道符 ’ | ’ :管道符主要用于多重命令处理,前面命令的标准输出作为后面命令的标准输入。
例如我们可以通过管道符来过滤ip地址
正常执行ip addr指令会得到下面结果:
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:1c:e3:13 brd ff:ff:ff:ff:ff:ff
inet 192.168.93.153/24 brd 192.168.93.255 scope global secondary noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe1c:e313/64 scope link
valid_lft forever preferred_lft forever
[root@localhost ~]#我们可以利用管道符提取后四行:
[root@localhost ~]# ip addr | tail -4
inet 192.168.93.153/24 brd 192.168.93.255 scope global secondary noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe1c:e313/64 scope link
valid_lft forever preferred_lft forever
[root@localhost ~]#
#这样就可以查询到ip地址为192.168.93.153
3.文件内容过滤
#统计文件有多少行,多少字(可以结合管道符使用)
wc wc -l wc -c
例子1:
[root@localhost ~]# ip addr | wc -l
16
#可以看到ip addr这个指令的结果有16行例子2:
[root@localhost ~]# ip addr | wc -c
962
#可以看到ip addr这个指令的结果有962个字节例子3:
[root@localhost ~]# ls / |wc -l
21
#wc -l也可以查看文件,目录个数,这里可以看到根目录下还有21个目录#生成数字序列
seq
例子1:生成一个0到10的序列
[root@localhost /]# seq 1 10
1
2
3
4
5
6
7
8
9
10
#也可以用于生成密码字典,用于爆破。#按行过滤字符串,默认是模糊匹配。
grep
例子1:
[root@localhost /]# ip addr | grep "inet"
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 192.168.93.151/24 brd 192.168.93.255 scope global noprefixroute ens33
inet 192.168.93.152/24 brd 192.168.93.255 scope global secondary noprefixroute ens33
inet 192.168.93.153/24 brd 192.168.93.255 scope global secondary noprefixroute ens33
inet6 fe80::20c:29ff:fe1c:e313/64 scope link把ip addr执行内容中带有"inet"的行显示出来了(标红了)
例子2:
[root@localhost ~]# ip addr | grep -w -n "inet"
3: inet 127.0.0.1/8 scope host lo
9: inet 192.168.93.151/24 brd 192.168.93.255 scope global noprefixroute ens33
11: inet 192.168.93.152/24 brd 192.168.93.255 scope global secondary noprefixroute ens33
13: inet 192.168.93.153/24 brd 192.168.93.255 scope global secondary noprefixroute ens33
#- w表示精准匹配在引号内要输入完整单词- n时显示行数#按列来过滤数据
awk
例子1:
[root@localhost ~]# cat xx.txt
123 root 456
789 boot 345
567 coot 678
789 doot 345
[root@localhost ~]# awk '{print $1}' xx.txt
123
789
567
789
#把xx.txt中第一列的数据提取出来了,$后的数字表示第几列- F可以指定分割符来进行提取
#排序
sort
例子1:
[root@localhost ~]# cat tom.txt
1
4
d
P
f
3
2
7[root@localhost ~]# sort -n tom.txt
d
f
P
1
2
3
4
7
#- n的排序方式是先字母(先小写后大写)再数字,- r表示反向排序。
#去重,可以除去相同的数字或字母
uniq
例子1:
[root@localhost ~]# cat tom.txt
1
4
d
P
f
f
f
g
3
3
2
7[root@localhost ~]# uniq tom.txt
1
4
d
P
f
g
3
2
7
4.vi编辑文件的简单使用
语法:vi后面加要编辑的文件,如果该文件不存在会自动创建文件
执行命令后会进入文件中(命令模式)
如图
vi有三种模式
命令模式
插入模式
底行模式
1按冒号可以进入底行模式
:set number #列出行数
:set nonumber #取消行数
:#n #跳转到第n行
:w #保存
:w 文件名 #以指定的文件名保存
:n1,n2 w 文件名 #将n1到n2行另存
:q #表示退出vi
:! #强制执行
:wq #保存并退出
:q! #强制退出并不保存
2按Esc可以回到命令模式
dd #删除光标所在行的该行数据
10dd #删除10行数据
yy #复制光标所在那行的数据
10yy #复制10行数据
p #在光标下一行进行粘贴
P #在光标上一行粘贴
3.按i,o,a进入插入模式
i #从目前光标所在处插入
o #从目前所在光标的这一行的下一行插入
a #从目前光标所在的下一个字符插入
5.linux目录结构
Linux与windows不同,在windows中可以分盘符,在盘符下创建目录(文件夹),在目录中存放文件。在linux中,不会分盘符,最顶端是根目录(/),所有的目录和文件都被组织为一个一根目录为顶点的倒置树状结构。
1使用tree查看目录结构
安装tree可以使用命令:[root@localhost ~]# yum install tree -y
[root@localhost /]# yum provides pstree #通过命令来查找软件
[root@localhost /]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── jerry
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
├── var
└── web21 directories, 0 files
#- L 1,表示只展示第一层,可以看到,在根目录下有21个目录,0个文件。
2根下各个目录的作用
1.bin:存放着每个指令的程序文件,非常重要,不能删除。
2.boot:存放着操作系统启动所必须的文件非常中要,如果删除可能开不了机。
3.dev:存放着硬件设备控制文件,特别重要,不要随意改动。
4.etc:存放着各种软件硬件的配置文件。
5.home:存放所有普通用户。
6.lib:存放安装的软件的库文件(32位)
7.lib64:存放安装的软件的库文件(64位)
8.proc:进程目录,存放了与进程相关的文件。可以使用ps -ef查看进程。
9.mnt:插入u盘,打开后一般在这个目录下
10.run:系统在运行时产生的临时文件,系统不会自动清除。
11.tmp:也是存放临时文件,系统会自动清除。
12.sbin(superbin):超级管理员才能使用的指令。
13.srv:用来存放软件源代码。
14.sys:系统功能目录。
15.usr:主要存放系统默认软件所需要的库。
16.var:用来存放一些常变动的文件,比如:日志文件,缓存文件,网页文件。
17. media:多媒体目录,一些,音乐,视频软件会安装到这个目录下。
18.opt:用来放一些安装的第三方软件。
19.root:root用户的家目录。
6.用户与用户组的管理
在Linux中用户与用户组有三种关系:一对一,一对多,多对多。如果创建一个用户,系统会自动创建一个用户组,它们就是一对一的关系。一对多就是一个用户可以属于多个用户,而一个用户组也可以有多个用户,这就是多对多。在用户组中的用户,都有该用户组的权限。
1用户的添加和删除
用户的信息可以在 /etc/passwd 中查看。用户密码可以在 /etc/shadow/ 下查看。
使用命令w,可以查看当前登录了几个用户,例如:
[root@localhost ~]# w
22:52:08 up 17 min, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 22:34 17:12 0.03s 0.03s -bash
root pts/0 192.168.93.1 22:35 0.00s 0.08s 0.00s w#tty表示主机登录,pts/0表示远程登录。
#添加用户
useradd passwd
例子1:
[root@localhost ~]# useradd tom #添加一个名为tom的用户。
[root@localhost ~]# passwd tom
更改用户 tom 的密码 。
新的 密码:
#为该用户设置密码。(输入密码时不会有回显)#查看一个用户存不存在,以及它的信息
id
例子1:
[root@localhost ~]# id tom
uid=1001(tom) gid=1001(tom) 组=1001(tom)#可以看到该用户的uid和gid。uid与gid分别是用户和用户组的标识。
#用户的删除
userdel
例子1:[root@localhost ~]# userdel tom
#用户在被删除后,/home/目录下对应该用户的文件夹还存在。可以用- r参数将其彻底删除。
例子2:[root@localhost ~]# user -r text
2用户的修改
#修改用户属性
usermod
例子1:[root@localhost ~]# usermod -L tom #锁定用户,被锁定的用户不能登录。
[root@localhost ~]# usermod -U tom #解锁用户。
[root@localhost ~]# lchage -l tom
帐号没被锁。
至少: 0
至多: 99999
警告: 7
不活跃: 从不
最后一次改变: 2024年02月10日
密码过期: 从不
密码不活跃: 从不
帐号过期: 从不#lchage -l 查看用户详细信息。
3 用户组的管理
在 /etc/group/ 下可以查看有哪些在用户组。
如果创建一个用户不指定它在哪个组,系统会默认创建一个组名与用户名名相同的用户组来存放该用户。
#添加用户组
groupadd
例子1:[root@localhost ~]# groupadd text
例子2:[root@localhost ~]# group -g text tom #把tom用户放到test用户组下。
#修改组名
groupmod
例子1:[root@localhost ~]# groupmod -n jerry tom
7.权限管理
1.文件权限
#文件属性
[root@localhost ~]# ls -l text.txt
-rw-r--r--. 1 root root 0 2月 12 21:37 text.txt#第一个横线表示文件类型:- 文件,d 目录,l 软链接。
#后面每三个字符,表示权限
#第一段(rw-)表示文件所属用户的权限。u(user)
#第二段(r--)表示用户所属用户组的权限。g(group)
#第三段(r--)表示其他用户对该文件的权限。o(other)
r 4 读权限 read
w 2 写权限 write
x 1 代表可执行权限 executable
- 0 空位权限,即没权限
#修改文件权限
chomd(只有文件所属用户与root用户可以修改)
例子1:
[text@localhost ~]$ chmod u-r,o-r text2.txt
[text@localhost ~]$ cat text2.txt
cat: text2.txt: 权限不够#把user和other的读权限去掉。
例子2:
[text@localhost ~]$ chmod u+r text2.txt
[text@localhost ~]$ cat text2.txt
hello
#把user的读权限加上。#权限值表
权限值 user group other 0 __ __ __ 1 x __ __ 2 __ w __ 3 x w __ 4 r __ __ 5 r x __ 6 r __ w 7 r x W #修改文件所属(只有root用户可以修改)
chown
例子1:
[text@localhost ~]$ chown text2 text2.txt
chown: 正在更改"text2.txt" 的所有者: 不允许的操作#不是root用户权限不够
例子2:
[root@localhost text]# ls -l
总用量 4
-rw-rw-r--. 1 text text 6 2月 12 22:45 text2.txt #属于text用户,text用户组[root@localhost text]# chown text2 text2.txt
[root@localhost text]# ls -l
总用量 4
-rw-rw-r--. 1 text2 text 6 2月 12 22:45 text2.txt#可以看到所属用户改了,但所属用户组没变
例子3:
[root@localhost text]# chown text2:text2 text2.txt
[root@localhost text]# ls -l
总用量 4
-rw-rw-r--. 1 text2 text2 6 2月 12 22:45 text2.txt
#使用chown 用户名:用户组名 文件名,来更改所属用户组
2目录权限
目录权限的解释:
目录的权限与文件一样也有三种:rwx r表示可以查看目录下有那些文件 w表示可以在该目录下创建,删除,修改文件。 x表示可以进入到该目录下。
例子1:
[root@localhost ~]# ls -l
总用量 4
-rw-------. 1 root root 1303 2月 7 15:02 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 2月 13 17:57 jerry#可以看到group没有读权限
[text2@localhost home]$ ls -l /root/jerry
ls: 无法访问/root/jerry: 权限不够#用text用户不能查看该目录下的文件
使用uid和gid的值来控制所属(在root用户下)
例子1:
[root@localhost ~]# ls -l
总用量 4
-rw-------. 1 root root 1303 2月 7 15:02 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 2月 13 17:57 jerry
[root@localhost ~]# ls -l
总用量 4
-rw-------. 1 root root 1303 2月 7 15:02 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 2月 13 17:57 jerry
[root@localhost ~]# id text
uid=1000(text) gid=1000(text) 组=1000(text)
[root@localhost ~]# chown 1000:1000 jerry/
[root@localhost ~]# ls -l
总用量 4
-rw-------. 1 root root 1303 2月 7 15:02 anaconda-ks.cfg
drwxr-xr-x. 2 text text 6 2月 13 17:57 jerry#通过chown uid:gid 修改了文件所属
3文件属性补充
查看文件属性
stat
例子1:
[root@localhost ~]# stat jerry/
文件:"jerry/"
大小:6 块:0 IO 块:4096 目录
设备:801h/2049d Inode:487585 硬链接:2
权限:(0755/drwxr-xr-x) Uid:( 1000/ text) Gid:( 1000/ text)
最近访问:2024-02-13 17:57:40.559649749 +0800
最近更改:2024-02-13 17:57:40.559649749 +0800
最近改动:2024-02-13 18:34:26.268137794 +0800
创建时间:-
#最近访问:指的是最后一次读取文件或目录的时间。当我们使用命令如cat、less、more等读取文件内容时,访问时间会被更新。最近更改:指的是最后一次修改文件内容的时间。当我们使用编辑器修改文件内容时,修改时间会被更新。
改变时间:指的是最后一次修改文件元数据(如权限、所有者等)的时间。当我们使用命令如chmod、chown等修改文件元数据时,改变时间会被更新。
8.shell提示符
root用户提示符:[root@localhost ~]#
普通用户提示符:[text@localhost ~]$
提示符的格式: [用户名@主机名 所在目录]#
#1.用户名
#2.主机名:可以用hostname更改,更改后要重新登陆
#3.所在目录:
例子1:~ 用户家目录
[root@localhost ~]# hostname computer
[root@localhost ~]# logout
[root@computer ~]#
9.history指令
用来查看用户输入了哪些写指令
例子1:
root@computer ~]# history
1 ps -ef |grep nginx
2 cd /usr/sbin/nginx
3 cd /usr/sbin/
4 ls
5 cat nginx
6 clear
7 ps -ef |grep nginx
8 ps aux|grep "nging: workr process"|awk'{print $1}'
9 ps aux|grep "nging: worker process"|awk'{print $1}'
可以通过history -c指令来删除
例子2:
[root@computer ~]# history -c
[root@computer ~]# history
1 history
[root@computer ~]# cat .bash_history
ps -ef |grep nginx
cd /usr/sbin/nginx
cd /usr/sbin/
ls
cat nginx
clear
ps -ef |grep nginx
ps aux|grep "nging: workr process"|awk'{print $1}'
ps aux|grep "nging: worker process"|awk'{print $1}'
但是重新登录使用history来查看还能看得到。因为history -c只是把内存中的指令删除,重新登陆后系统会把硬盘中的指令重新加载到内存中,保存指令的文件在用户家目录的 .bash_history(隐藏文件),要想彻底删除可以删除这个文件。
10.输入输出重定向
在Linux中,重定向是一种将命令的输入或输出从默认位置改变到其他位置的方法。它可以将命令的输出发送到文件中,或者从文件中获取输入,而不是通过终端进行交互。
1.输出重定向(>):将命令的输出重定向到文件中。例如,使用以下命令将命令的输出写入到文件中,如果文件不存在,则会创建一个新文件;如果文件已经存在,则会覆盖原有内容。
追加重定向(>>):将命令的输出追加到文件末尾,而不是覆盖原有内容。例如,使用以下命令将命令的输出追加到文件中
例子1:
[root@computer ~]# ip addr | tail -4 > 1text.txt
[root@computer ~]# cat 1text.txt
inet 192.168.93.153/24 brd 192.168.93.255 scope global secondary noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe1c:e313/64 scope link
valid_lft forever preferred_lft forever
2.输入重定向(<):将命令的输入从文件中获取。例如,使用以下命令将文件作为命令的输入
例子2:
[root@computer ~]# cat < 1text.txt
inet 192.168.93.153/24 brd 192.168.93.255 scope global secondary noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe1c:e313/64 scope link
valid_lft forever preferred_lft forever
11.Linux压缩与解压缩
压缩是指将文件或数据进行压缩处理,以减小文件的大小或数据的存储空间。通过压缩可以节省存储空间、提高数据传输效率,并且在一些情况下可以提高系统的性能
1tar
tar:能将文件压缩为filename.tar.gz
压缩:tar -zxf 压缩文件名称 压缩包所在路径(可以有多个文件)
解压:tar -zxf 解压路径
归档:tar -ch
查看压缩包有哪些文件:tar -tf
例子1:
[root@localhost ~]# tar -zcf xx.tar.gz text2.txt
[root@localhost ~]# ls
1text.txt anaconda-ks.cfg jerry text2.txt xx.tar.gztar:归档
例子2:
[root@localhost ~]# ls
1text.txt anaconda-ks.cfg jerry text2.txt text3.txt xx.tar.gz
[root@localhost ~]# tar -cf text4.txt text2.txt text3.txt
[root@localhost ~]# ls1text.txt anaconda-ks.cfg jerry text2.txt text3.txt text4.txt xx.tar.gz
例子3:#查看压缩包有哪些文件[root@localhost ~]# tar -tf xx.tar.gz
text2.txt
2gzip
#压缩文件,会删除原文件
例子1:压缩
[root@localhost ~]# gzip text2.txt
[root@localhost ~]# ls
1text.txt anaconda-ks.cfg jerry text2.txt.gz text3.txt
例子2:解压[root@localhost ~]# gzip -d text2.txt.gz
[root@localhost ~]# ls
1text.txt anaconda-ks.cfg jerry text2.txt text3.txt
例子3:压缩多个文件[root@localhost ~]# ls
anaconda-ks.cfg jerry text1.txt text2.txt text3.txt
[root@localhost ~]# gzip text1.txt text2.txt
[root@localhost ~]# ls
anaconda-ks.cfg jerry text1.txt.gz text2.txt.gz text3.txt
#与tar不同,gzip会将多个文件分别压缩,而tar会将多个文件压缩为同一个压缩包。
3zip
也会保留原文件
例子1:压缩
[root@localhost ~]# zip -r text3.zip text1.txt text2.txt
adding: text1.txt (deflated 42%)
adding: text2.txt (stored 0%)
[root@localhost ~]# ls
anaconda-ks.cfg jerry text1.txt text2.txt text3.txt text3.zip
例子2:解压(先删除原文件)[root@localhost ~]# unzip text3.zip
Archive: text3.zip
inflating: text1.txt
extracting: text2.txt
[root@localhost ~]# ls
anaconda-ks.cfg jerry text1.txt text2.txt text3.txt text3.zip
12.文件传输
1网站下载文件
curl
例子1:curl -o 存放路径/文件名 文件网址
scp传输
主要用于Linux之间的文件传输,scp需要接受数据的一方(服务端)开启ssh服务 。Windows往Linux上面发送文件也可以用scp,只是单向的,因为window上没有ssh服务端。
例子1:
[root@localhost ~]# scp text1.txt root@192.168.93.128:/tmp/text
The authenticity of host '192.168.93.128 (192.168.93.128)' can't be established.
ECDSA key fingerprint is SHA256:JT2NnBnCZm8DMxzH0AfQ4vaM2ym4uJnHdIgp4egMRRc.
ECDSA key fingerprint is MD5:49:f8:2d:df:49:72:6f:76:72:50:7a:d7:e4:ff:bd:c7.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added '192.168.93.128' (ECDSA) to the list of known hosts.
root@192.168.93.128's password:
text1.txt 100% 233 161.9KB/s 00:00┌──(root㉿kali)-[/tmp/text]
└─# ls
text1.txt
13.find查找文件
find命令是一个非常强大的文件搜索工具,它可以根据指定的条件在指定的目录及其子目录中查找文件。
#文件查找
例子1:普通查询
[root@localhost tmp]# find /etc -maxdepth 1 -type f -name "pa*"
/etc/passwd
/etc/passwd-#命令格式:find /etc -maxdepth 1 -type f -name "pa*"
命令 目录 查找深度 类型 文件名称
#-type 文件类型:f表示文件,b表示目录
#-maxdept:查找深度就是目录层级
#“pa*”:表示匹配任意以pa开头的文件,*也可以写在开头
例子2:根据文件大小来查找(单位k M G,不带单位就默认是b)
[root@localhost /]# find / -type f -size +100M
/proc/kcore
find: ‘/proc/2659/task/2659/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/2659/fdinfo/5’: 没有那个文件或目录
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
/usr/lib/locale/locale-archive#找大于100M的文件
[root@localhost /]# find / -type f -size +50M -and -size -100M
find: ‘/proc/2874/task/2874/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/2874/fdinfo/5’: 没有那个文件或目录
/var/lib/rpm/Packages
/boot/initramfs-0-rescue-fa1eb048379145999e72134c1d3cbefb.img#找大于50小于100的文件
例子3:区分大小写[root@localhost /]# find /root -type f -iname "Pa*"
#name换成iname
例子4:根据修改时间来查找
#时间参数(atime,mtime,ctime,amin,mmin,cmin),time是按天来查找,min是按分钟查找。a,m,c分别表示Access time,Modify time,Change time.
[root@localhost /]# find / -type d -mtime +1 -and -mtime -3
/tmp/vmware-root_548-2999460674
例子5:根据用户来查找文件[root@localhost /]# find / -user text
find: ‘/proc/5239/task/5239/fd/6’: 没有那个文件或目录
find: ‘/proc/5239/task/5239/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/5239/fd/5’: 没有那个文件或目录
find: ‘/proc/5239/fdinfo/5’: 没有那个文件或目录
/root/jerry
/var/spool/mail/si
/var/spool/mail/text
/tmp/xx
/home/text
/home/text/.bash_logout
/home/text/.bash_profile
/home/text/.bashrc
/home/text/.viminfo
/home/text/.bash_history
#找到属于text用户的文件与目录例子6:根据用户组来查找
[root@localhost /]# find / -group text
find: ‘/proc/5374/task/5374/fd/6’: 没有那个文件或目录
find: ‘/proc/5374/task/5374/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/5374/fd/5’: 没有那个文件或目录
find: ‘/proc/5374/fdinfo/5’: 没有那个文件或目录
/root/jerry
/tmp/xx
/home/text
/home/text/.bash_logout
/home/text/.bash_profile
/home/text/.bashrc
/home/text/.viminfo
/home/text/.bash_history
14.进程管理
1查看和关闭进程
程序:安装到你电脑的程序文件
进程:真在运行的程序
#查看进程
例子1:ps -ef
[root@localhost /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 20:38 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 20:38 ? 00:00:00 [kthreadd]
root 4 2 0 20:38 ? 00:00:00 [kworker/0:0H]
root 5 2 0 20:38 ? 00:00:00 [kworker/u256:0]
root 6 2 0 20:38 ? 00:00:00 [ksoftirqd/0]
root 7 2 0 20:38 ? 00:00:00 [migration/0]
root 8 2 0 20:38 ? 00:00:00 [rcu_bh]
root 9 2 0 20:38 ? 00:00:00 [rcu_sched]
root 10 2 0 20:38 ? 00:00:00 [lru-add-drain]
#pid:进程编号,是程序启动后系统自动分配的#uid:是进程所属用户,即哪个用户启动的
#CMD:用[]括起来的是系统级别的进程,不带[]是用户级别的进程
#ppid:父进程,某个进程是由某个进程创建出来的
#STIME:进程启动时间
#CMD:该进程执行了什么指令
#TTY:终端信息
#关闭进程
例子1:kill 进程id
[root@localhost ~]# kill 8286
2查看计算机硬件信息
#查看cpu
lscpu
#查看内存
free -h
#查看硬盘命令
df -h
15.linux运行级别
Linux运行级别是指系统在不同的状态运行的模式。在Linux中,共有7个运行级别,分别是0-6级。每个级别都有不同的功能和服务启动状态1. 运行级别0:系统停机状态,系统将会关闭。
切换运行级别可以使用命令init
或者telinit
,例如 init 4
可以切换到运行级别4。
运行级别0: 关机
运行级别1: 单用户,类似于window安全模式
运行级别2: 不带网络的用户,这种是不能联网的
运行级别3:完整多用户模式,我们平常使用的模式
运行级别4:保留,未被使用。
运行级别5:图形界面模式,具有完整的网络服务。
运行级别6:系统重启模式。
#查看运行级别
例子1:
[root@localhost ~]# runlevel
N 3
16.权限掩码
1掩码
#查看掩码
umask
例子1:
[root@localhost ~]# umask
0022
例子2:[root@localhost ~]# mkdir text
[root@localhost ~]# touch text.txt
[root@localhost ~]# ls -l
总用量 4
-rw-------. 1 root root 1303 2月 7 15:02 anaconda-ks.cfg
drwxr-xr-x 2 root root 6 2月 17 21:57 text
-rw-r--r-- 1 root root 0 2月 17 21:58 text.txt
#目录的权限是755,文件的权限是644。可以通过umask计算得到#文件权限计算:0666-0222=0644
#目录权限计算:0777-0022=0755
2特殊权限
让普通用户拥有root用户的权限,suid,只能设置在user上,主要针对命令文件。
例子1:passwd修改密码,本来只有在root用户下可以执行,而普通用户也有修改密码的需求,所以给了普通用户这样的权限。但只能修改本用户的密码
[text@localhost ~]$ passwd
更改用户 text 的密码 。
为 text 更改 STRESS 密码。
(当前)UNIX 密码:
[text@localhost ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd#s表示可以执行该文件,root赋予了它权限
3切换用户
#root用户可以不用密码切换到其他用户
例子1:
[root@localhost ~]# su text
[text@localhost root]$
#其他用户切换需要密码
例子2:
[text@localhost ~]$ su root
密码:
4sudo授权
#通过修改配置可以将root用户的权限授予给普通用户(只有root用户才能修改)
配置 /etc/sudoer #直接visudo可以编辑这个文件
#在100行可以看见这些内容
root ALL=(ALL) ALL
用户 所有终端 所有指令可以添加配置: text ALL=(ALL) /usr/sbin/reboot
[text@localhost ~]$ sudo -l
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。[sudo] text 的密码:
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG
LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE
LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin用户 text 可以在 localhost 上运行以下命令:
(ALL) /usr/sbin/reboot
#用sudo -l可以查看到以下内容说明配置生效了 #不能直接使用reboot要加上sudo即sudo reboot