文件目录类
- 查看
当前工作目录的绝对路径: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这条命令。


5个占位符详细说明
| 特殊符号 | 含义 |
|---|---|
| * | 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。 |
| , | 代表不连续的时间。比如“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 | 进程启动时的命令和参数。若过长,则会被截断显示 |