文件目录类
- 查看
当前工作目录的绝对路径
:pwd
- 查看当前目录的内容信息:
ls [选项] [文件或目录]
。常用选项:-a
:显示当前目录下所有(包括隐藏的)文件
和目录
。-l
:以列表
的方式显示信息。 - 切换到指定目录:
cd 绝对/相对路径
。例如:回到当前目录的上一级目录
:cd ..
。回到当前用户的主目录:cd ~
。 -
创建目录
:mkdir [参数] 目录
,参数-p
表示创建多级目录
。 -
删除空目录
:rmdir [选项] 空目录
,若目录下有内容则无法删除。 -
删除目录
:rm -rf 文件或目录
。参数-r
(-r, -R, --recursive:递归的; 循环的)。参数-f
( -f, --force:忽略不存在的文件,强制删除它们)。 -
创建空文件
:touch 文件名
。 -
拷贝
某个目录或文件到指定目录:cp [参数] source dest
。参数-r
:递归地复制整个文件夹。强制覆盖不提示
:\cp
,即在cp命令前面添加反斜杠\
。
//重命名
mv oldNameFile newNameFile
// 移动文件或目录
mv /temp/movefile /targetFolder
- 查看文件内容:
cat [参数] 要查看的文件
。参数-n
:显示行号。例如:cat -n /etc/profile | more
,其中|
表示管道
命令,more
表示分页
命令。cat命令只能读取文件,而不能修改文件! -
分页
显示文本文件的内容:more 文件名
。例如:more /etc/profile
。
- 分屏查看文件内容:
less 文件名
,其比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次性将整个文件加载之后才显示,而是根据显示需要加载内容, 适合显示大型文件。例如:less /etc/profile
。 - 输出重定向
>
:将会覆盖
原来文件的内容。追加>>
,不会覆盖原文件,而是追加到
文件的末尾。例如:ls -l > h.txt
或者ls -l >> h.txt
,表示将ls -l显示的内容覆盖
(或者追加
)写入到 h.txt文件中,若文件不存在,则自动创建该文件。将文件1中的内容覆盖到文件2:cat 文件1 > 文件2
。将字符串追加到文件尾:echo "内容">> 文件
。
- echo输出内容到控制台:
echo [选项] [输出内容]
,例如:输出当前用户的环境变量echo $PATH
。 - 默认情况下head指令显示文件中前
10
行内容:head 文件名
。例如,查看文件头5行的内容:head -n 5 文件名
。 - 默认情况下tail指令显示文件中后10行内容:
tail 文件名
。例如:查看文件后5行内容:tail -n 5 文件名
。 -
tail -f 文件名
:实时追踪某个文档的所有更新记录。
-
软链接
也称为符号链接
,类似于windows里的快捷方式
,主要存放了链接其他文件的路径:ln -s [原文件或目录] [软链接名]
。例如: 在/home
目录下创建一个软连接linkToRoot
链接到/root
目录:ln -s /root linkToRoot
。
-
删除软链接
:rm –rf ./软链接名
。注意:后面不能加斜杠/
(rm -rf ./软链接名/
),否则会把软链接以及软链接指向的目录下的内容全部删除!!! - 查看已执行过的
历史命令
:history
。 - 显示最近使用过的10个指令:
history 10
。 - 执行编号为x的历史指令:
!x
时间日期类
- 显示当前具体时间:
date
。 - 显示年月日时分秒:
date "+%Y-%m-%d %H:%M:%S"
。
设置系统当前时间:
date -s 时间字符串
。例如:date -s 2019-11-17 11:22:22
查看日历:
cal [选项]
。例如:查看当前月份的日历:cal
;查看2020年一整年的日历:cal 2020
。
搜索查找类
- 从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端:
find [搜索范围] [选项]
。
- 查找/root目录下的h.txt文件:
find /root -name h.txt
。 - 查找/root/myshell目录下拥有者为root的所有文件和目录:
find /root/myshell/ -user root
。 - 查找根目录下大于20M的文件(+n 大于 -n小于 n等于):
find / -size +20M
。 - 查找根目录下扩展名为.txt的文件:
find / -name *.txt
。
- 快速定位文件的路径:
locate 文件名
。原理:locate指令利用事先建立系统中所有文件名称及其路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。由于locate指令基于数据库
进行查询,所以在第一次运行之前,必须使用updatedb
指令创建locate数据库。
- 查找文件中某个关键字:
grep [选项] 查找内容 源文件
。
- 管道符:
|
,表示将前一个命令的处理结果输出传递
给后面的命令处理。过滤查找
:grep
。例如:查找c.txt文件中含关键字hello
(不区分大小写)的位置:cat c.txt | grep -i -n hello
。
压缩和解压缩类
- 压缩文件:
gzip 文件名
,其只能将文件压缩为*.gz文件。使用gzip指令对文件进行压缩后,不会保留原文件
! - 解压文件:
gunzip 文件名.gz
。
- 压缩目录或文件:
zip [选项] XXX.zip 将要压缩的内容
。参数-r
表示递归压缩
。例如:压缩/root整个目录:zip -r mypackage.zip /root
。 - 解压文件:
unzip [选项] XXX.zip
。参数-d<目录>
:指定解压后文件的存放目录。例如:将/root/mypackage.zip压缩文件解压到/opt目录下:unzip -d /opt/ mypackage.zip
。
- 打包指令:
tar -zcvf XXX.tar.gz 打包的内容
,打包成*.tar.gz
的文件。例如:将/root目录下的b.txt、c.txt、h.txt这3个文件打包成a.tar.gz的压缩文件:tar -zcvf a.tar.gz b.txt c.txt h.txt
;将/home整个目录打包成myhome.tar.gz文件:tar -zcvf myhome.tar.gz /home
。
- 解压*.tar.gz文件:
tar -zxvf XXX.tar.gz
。例如:将myhome.tar.gz压缩文件解压到/opt目录下:tar -zxvf myhome.tar.gz -C /opt/
。注意:加上参数-C
表示改变目录,且指定解压的目录事先要存在才能解压成功!
组管理和权限管理
- 在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件
有拥有者、所属组、其它组的概念。 - 文件或目录的
拥有者
:一般为文件的创建者
。谁创建了该文件,就自然地成为该文件的拥有者。 - 查看文件的拥有者:
ls -ahl
- 改变文件的
拥有者
:chown 用户名 文件名或目录名
。(change owner)例如:chown tom app.txt
。常用选项:-R
:递归改变
文件或目录的拥有者。 - 文件或目录的
所属组
:当某个用户创建了一个文件后,默认这个文件的所属组就是该用户所在的组。 - 修改文件的
所属组
:chgrp 组名 文件名或目录名
。 常用选项:-R
:递归改变
文件或目录的所属组。
- 文件或目录的其他组:除文件的拥有者和所属组的用户外,系统的其它用户都是文件的其它组。
- root的管理权限下修改用户所属组:
usermod –g 组名 用户名
。 - 改变该用户登陆的初始目录:
usermod –d 目录名 用户名
。
- rwx用数字表示为
r=4,w=2,x=1
。rwx=4+2+1=7。 -
rwx
作用在文件
的含义:
[r]代表可读(read): 文件可以读取,查看。
[w]代表可写(write):文件可以修改,但是不代表可以删除该文件,要删除一个文件的前提条件是对该文件所在的目录有写权限
,才能删除该文件!
[x]代表可执行(execute):文件可以被执行。
-
rwx
作用在目录
的含义:
[r]代表可读(read):可以读取,
ls查看目录内容
。
[w]代表可写(write):可以修改,目录内创建+删除+重命名文件或目录
。
[x]代表可执行(execute):可以进入该目录
。
- 使用
chmod
指令修改文件或者目录的权限
u
:所有者
g
:所有组
o
:其他用户
a
:所有用户(u、g、o的总和)
- 通过数字变更权限:例如:
chmod u=rwx,g=rx,o=x 文件名或目录名
相当于chmod 751 文件名或目录名
;chmod o+w 文件名或目录名
;chmod a-x 文件名或目录名
。
-
任务调度
:指系统在某个时间执行特定的命令或程序。 -
分类
:1.系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等。
2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。 - 设置定时任务:
crontab [选项]
。选项:-e
:编辑crontab定时任务;-l
:查询crontab任务;-r
:删除当前用户下所有的crontab任务。 - 设置任务调度文件:
/etc/crontab
。 - 设置
个人任务调度
,键入命令:crontab -e
,编写内容:*/1 * * * * ls -l /etc > /tmp/to.txt
,表示每小时的每分钟去执行一下ls –l /etc/ > /tmp/to.txt
这条命令。
特殊符号 | 含义 |
---|---|
* | 代表任何时间 。比如第一个“*”就代表一小时中每分钟都执行一次的意思。 |
, | 代表不连续的时间 。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令 |
- | 代表连续的时间范围 。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令 |
- 小练习:每隔1分钟,就将当前的日期信息追加到
/tmp/mydate.txt
文件中,步骤如下:
- 在/root目录下,键入命令:
vim mytask1.sh
,往文件里添加内容:date >> /tmp/mydate.txt
。- 给mytask1.sh一个执行权限,键入命令:
chmod 744 mytask1.sh
。- 编写定时任务,键入命令:
crontab -e
,往里添加内容:*/1 * * * * /root/mytask1.sh
。- 查看/tmp/mydate.txt文件:
more /tmp/mydate.txt
。
- 终止任务调度:
crontab –r
。 - 列出当前所有的任务调度:
crontab –l
。 - Centos7重启任务调度:
systemctl restart crond
。
- 查看系统进程指令:
ps -aux | more
。例如查看是否有sshd服务:ps -aux | grep sshd
。ps -a
:显示当前终端所有进程信息;ps -u
:以用户的格式显示进程信息;ps -x
:显示后台进程运行的参数。
字段 | 说明 |
---|---|
USER | 执行进程的用户名 |
PID | 进程识别号 |
%CPU | 进程占用CPU的百分比 |
%MEM | 进程占用物理内存的百分比 |
VSZ | 进程占用的虚拟内存大小,单位:KB |
RSS | 进程占用的物理内存大小,单位:KB |
TTY | 终端名称 |
STAT | 进程的状态。S:睡眠;s:该进程是会话的先导进程;N:该进程拥有比普通优先级更低的优先级;R:正在运行;Z:僵死进程;D:短期等待;T:被跟踪或被停止等 |
START | 进程的启动时间 |
TIME | 进程占用CPU的总时间 |
COMMAND | 进程启动时的命令和参数。若过长,则会被截断显示 |
- 以全格式显示当前所有的进程(可以查看进程的父进程):
ps -ef | more
。-e
:显示所有进程。-f
:全格式。例如:检查redis进程是否存在:ps -ef | grep redis
。
字段 | 说明 |
---|---|
UID | 执行进程的用户名 |
PID | 进程的id |
PPID | 父进程的id |
C | CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高 |
STIME | 进程的启动时间 |
TTY | 终端名称 |
TIME | 进程占用CPU的总时间 |
CMD | 进程启动时的命令和参数。若过长,则会被截断显示 |