Linux常用操作详解

Linux常用命令

关机&重启

1
2
3
4
5
6
7
shutdown -h now   立即关机
shutdown -h 1 一分钟后关机
shutdown -r now 立即重启

halt 关机
reboot 重启
sync 把内存的数据同步到磁盘上

帮助指令

1
2
3
man  指令       查看某指令的详细信息

help 指令 获得shell内置命令的帮助信息

文件目录操作

pwd命令

1
pwd     查看当前目录绝对路径

cd命令

切换目录

1
2
3
4
5
cd /        切换到根目录
cd /usr 切换到根目录下的usr目录
cd ../ 切换到上一级目录 或者 cd ..
cd ~ 切换到home目录
cd - 切换到上次访问的目录

ls命令

查看目录和文件

1
2
3
4
5
ls               查看当前目录下的所有目录和文件
ls -a 查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l 或 ll 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)
ls -ahl 查看详细信息
ls /dir 查看指定目录下的所有目录和文件 如:ls /usr

mkdir命令

创建目录

1
2
mkdir  要创建的目录     用于创建单个目录
mkdir -p 要创建的目录 用于创建多级目录

remdir命令

删除目录

1
2
rmdir  目录名称      用于删除空的目录
rm -rf 目录名称 强制删除目录(包括非空)

rm命令

删除文件或目录

1
2
3
rm  要删除的文件或目录     删除某个文件或目录
rm -r 要删除的文件或目录 递归删除整个文件夹
rm -f 要删除的文件或目录 强制删除不提示

touch命令

创建空文件

1
touch  文件名称     创建一个空文件

cp命令

拷贝文件

1
2
3
cp  文件  目标目录     将一个文件拷贝到目标目录
cp -r 文件 目标目录 将整个文件夹拷贝到目标目录
\cp -r 文件 目标目录 强制覆盖不提示

mv命令

移动或重命名文件

1
2
mv oldNameFile newNameFile   重命名
mv 原目录位置 目标目录 移动文件

cat命令

查看文件内容

1
2
3
cat  要查看的文件          只查看文件内容,不能修改
cat -n 要查看的文件 显示行号
cat -n 要查看的文件 |more 方便查看

more命令

基于VI编辑器的文本过滤器,以全屏幕的方式按页显示文本内容

1
2
3
4
5
6
7
空格键        代表向下翻一页
Enter 代表向下翻一行
q 立即离开more,不再显示该文件内容
ctrl+F 向下滚一屏
ctrl+B 向上滚一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号

less命令

用来分屏查看文件内容,显示文件时根据显示需要加载内容,而不是整个文件加载才显示,对大型文件具有较高的效率

1
2
3
4
5
6
空格键        向下翻动一页
pagedown 向下翻动一页
pageup 向上翻动一页
/字串 向下搜索字串;n:向下查找;N:向上查找
?字串 向上搜索字串;n:向上查找;N:向下查找
q 退出less

echo命令

输出内容到控制台

1
echo  输出内容    

head命令

显示文件的开头内容

1
2
head  文件         查看文件前10行的内容
head -n 行数 文件 查看文件前任意行内容

tail命令

输出文件尾部内容

1
2
3
tail  文件          查看文件后10行内容
tail -n 行数 文件 查看文件后任意行内容
tail -f 文件 实时追踪该文档的所有更新(ctrl + c 退出)

>重定向和>>追加

1
2
3
4
ls -l > 文件        列表的内容写入文件中(覆盖写)
ls -al >> 文件 列表的内容追加到文件的末尾中
cat 文件1 > 文件2 将文件1的内容覆盖到文件2
echo "内容" >> 文件 将内容追加到文件末尾

ln命令

软链接也称符号链接,类似于windows里的快捷方式

1
2
ln -s 原文件或目录 软链接名  给原文件创建一个软链接
rm 软链接名 删除软链接

history命令

查看已经执行过的历史命令,也可以执行历史命令

1
2
3
history     查看已经执行过的所有历史命令
history 10 查看最近10条执行过的命令
!命令序号 执行该命令

时间日期类

date命令

显示时间

1
2
3
4
5
date          显示当前时间
date +%Y 显示当前年份
date +%m 显示当前月份
date +%d 显示当前是哪一天
date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒

设置时间

1
date -s 字符串时间    设置系统当前时间

日历

1
2
cal          显示当前月的日历
cal 年份 显示整年日历

搜索查找类

find命令

从指定目录向下递归地遍历其各个子目录

1
2
3
find 指定目录 -name 文件名      按文件名查找文件
find 指定目录 -user 用户名 查找属于指定用户的所有文件
find 指定目录 -size 文件大小 按照指定文件大小查找文件

locate命令

可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,,查询速度较快。为了保证查询结果的准确性,管理员必须定期更新locate时刻

1
locate 搜索文件           定位文件路径

【说明】由于locate指令是基于数据库进行查询,所以第一次允许前,必须使用updatedb指令创建locate数据库

grep命令和管道符号|

grep过滤查找,管道符“|”,表示将前一个命令的处理结果输出传递给后面的命令处理

1
2
3
4
5
grep 查找内容 源文件            在源文件内查找内容
grep -n 查找内容 源文件 在源文件内查找并显示行号
grep -i 查找内容 源文件 在源文件内查找并忽略大小写
or
cat 源文件 | grep "yes" 先查找源文件通过管道用grep再过滤

压缩与解压类

gzip/gunzip命令

针对单个的文件压缩和解压

1
2
gzip   文件       压缩文件,只能将文件压缩为*.gz文件
gunzip 文件.gz 解压文件

zip/unzip命令

可将整个文件夹压缩解压

1
2
3
4
zip    压缩名.zip  要压缩的内容    压缩文件
zip -r 压缩名.zip 要压缩的内容 递归压缩,即压缩目录
unzip 压缩名.zip 解压文件
unzip -d 目录 xxx.zip 指定解压后文件的存放目录

tar命令

tar是打包指令,最后打包的文件是.tar.gz的文件

1
2
3
4
5
6
7
tar -c xxx.tar.gz  打包内容     产生一个.tar打包文件
tar -v xxx.tar.gz 打包内容 显示详细信息
tar -f xxx.tar.gz 打包内容 指定压缩后的文件名
tar -z xxx.tar.gz 打包内容 打包同时压缩
tar -x xxx.tar.gz 打包内容 解包.tar文件
tar -zcvf xxx.tar.gz 打包内容 打包并压缩
tar -zxvf xxx.tar.gz 打包内容 解压

所有者、组

chown命令

修改文件的所有者

1
2
chown  用户名  文件名    修改文件的所有者
chown -R 用户名 目录名 修改目录下所有 文件的所有者

增删改-组

1
2
3
4
groupadd  组名      新增组
groupdel 组名 删除组
useradd -g 用户组 用户名 创建用户时直接加入组
usermod -g 用户组 用户名 修改用户所在的组

chgrp命令

修改文件的组

1
chgrp   组名  文件名  修改文件所在的组

用户登录和注销

1
2
3
su - 用户名   普通用户切换管理员

logout 注销用户(在图形运行级别无效,在运行级别3下有效)

用户管理

1
2
3
4
5
6
7
8
9
10
useradd  用户名  创建用户(默认家目录在/home/用户名)
useradd -d /home/test 用户名 指定家目录

passwd 用户名 为该用户设置密码

userdel 用户名 删除用户(保留家目录)
userdel -r 用户名 删除用户及用户主目录

id 用户名 查询用户信息
who am i 查看当前用户

其他

1
2
clear                清屏
%s/被替换的/替换的 替换指令

Linux权限

每个文件前有10个字符,其中:

  1. 第0 位确定文件类型(d,-,l,c,b)

    d 是目录,相当于windows的文件夹

    - 是普通文件

    l 是链接,相当于windows的快捷方式

    c 是字符设备文件,鼠标,键盘

    b 是块设备,比如硬盘

  2. 第1-3位确定所有者(该文件的所有者)拥有该文件的权限 ——-User

  3. 第4-6位确定所属组(同用户组的)拥有该文件的权限——-Group

  4. 第7-9位确定其他用户拥有该文件的权限——Other

rwx权限详解

  • rwx作用到文件
    1. [r] 代表可读(read):可以读取,查看
    2. [w]代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提是对该文件所在目录有写权限,才能删除该文件。
    3. [x]代表可执行(execute):可以被执行
  • rwx作用到目录
    1. [r]代表可读,可以读取,ls查看目录内容
    2. [w]代表可写,可以修改,对目录内创建+删除+重命名目录
    3. [x]代表可执行,可以进入该目录

chmod 修改权限命令

可以修改文件或目录的权限

第一种方式:+、-、=变更权限

u :所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)

1
2
3
chmod  u=rwx,g=rx,o=x   文件/目录名    赋予权限
chmod o+w 文件/目录名 给其他用户增加写的权限
chmod a-x 文件/目录名 给所有用户除去执行的权限

第二种方式:通过数字变更权限

r=4 w=2 x=1 rwx = 4+2+1 = 7

1
2
chmod u=rwx,g=rx,o=x 文件/目录名
== chmod 751 文件/目录名

任务调度

crontab 任务调度

定时任务的设置,如病毒扫描,数据库备份等

1
2
3
crontab -e          编辑crontab定时任务
crontab -l 查询crontab任务
crontab -r 删除当前用户所有的crontab任务
  1. 设置任务调度文件:/etc/crontab

  2. 设置个人任务调度。执行crontab -e命令

  3. 输入任务到调度文件,如:*/1 * * * * ls -l /etc/ > /tmp/to.txt 每小时的每分钟执行ls -l /etc/ > tmp/to.txt命令

  4. 占位符含义

    项目 含义 范围
    第一个“*” 一小时当中的第几分钟 0-59
    第二个“*” 一天当中的第几小时 0-23
    第三个“*” 一个月当中的第几天 1-31
    第四个“*” 一年当中的第几月 1-12
    第五个“*” 一周当中的星期几 0-7(0,7都代表星期日)
  5. 特殊符号

特殊符号 含义
* 代表任何时间,比如第一个“*”就代表一小时中每分钟都执行一次的意思
代表不连续的时间,比如“0 8,12,16 * * *”,代表每天的8点0分,12点0分,16点0分都执行一次
- 代表连续的时间范围,比如“0 5 * * 1-6”,代表周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次,比如“*/10 * * * * ”命令,代表每隔10分钟就执行一次

脚本任务:先写脚本,给脚本文件赋可执行权限,编写调度任务

1
2
3
crontab  -r            终止任务调度
crontab -l 列出当前有哪些任务调度
service crond restart 重启任务调度

at 定时任务

  1. 一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行

  2. 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业

  3. at命令是一次性定时计划任务,执行完一个任务后不再执行此任务

  4. 在使用at命令时,一定要保证atd进程的启动

    ps -ef | grep atd // 检测atd是否运行

1
2
at  [选项]  [时间]
ctrl + D 结束at命令的输入

进程管理

查看系统进程

1
2
3
ps                   简单查询有哪些正在执行的进程
ps -aux|grep xxx 详细查询某个进程信息
ps -ef|grep xxx 以标准格式显示某进程

终止进程

1
2
3
kill  进程号         通过进程号终止进程
kill -9 进程号 强迫进程立即停止
killall 进程名称 通过进程名称终止进程

进程树

1
2
pstree -p        显示进程的PID
pstree -u 显示进程的所属用户

服务管理

1
service  服务名 [start|stop|restart|reload|status]

防火墙

1
2
3
4
firewall-cmd --permanent --add-port=端口号/协议          打开端口
firewall-cmd --permanent --remove-port=端口号/协议 关闭端口
firewall-cmd --reload 重新加载
firewall-cmd --query-port=端口/协议 查询端口是否开放