Linux基础参考
本文涉及的更多是Linux下的使用命令,可作为参考使用,如果是想学习Linux,那这篇文章可能不太适应。适合有一定基础的朋友。如有错误之处,希望朋友们在评论处指出,谢谢翻阅!!!
1、注意事项
-
Linux的命令和文件名严格区分大小写;
-
Linux中所有内容以文件形式保存,包括硬件;硬盘文件是
.dev.sd[a-p]
、光盘文件是/dev/sr0
; -
Linux中命令行对网络设置、环境变量或服务配置文件的更改是临时生效的;
-
Linux不靠扩展名区分文件类型;但可以使用扩展名的形式用来管理,作为提示:
压缩包:
*.gz
、*.bz2
、*.tar.bz2
、*.tgz
等;二进制软件包:
*.rpm
;网页文件:
*.html
、*.php
;脚本文件:
*.sh
;配置文件:
*.conf
; -
Linux所有的存储设备都必须挂载(类似分配盘符)之后才能使用,包括硬盘、U盘等;
2、各目录的作用
3、命令格式
命令格式:命令 [-选项] [参数];例:ls -la /etc
。参数是命令操作的对象,可以是目录、文件、对象等;
说明:
- 个别命令使用不遵循此格式;
- 当有多个选项时,可以写在一起;
- 简化选项与完整选项;-a 等于 --all
4、常用命令
1 目录处理命令
1.1 显示目录文件信息
ls
:显示所有目录文件;语法:ls 选项[-all] [文件或目录]
。
选项:-a
显示所有包括隐藏的文件;-l
显示详细信息;-d
查看目录属性;-i
显示文件的唯一标识;-h
换格式显示文件大小
文件信息内容格式
-rw-r--r-- 1 root root 9.9M Dec 11 20:38 bison
* 所属者 所属组 文件大小 最后修改时间 文件名
-rw-r--r--
-:是文件类型(- 二进制文件;d 目录;l 软连接文件)
rw- r-- r--
u(所有者) g(所属组) o(其他人)
r读——w写——x执行
mkdir -p [目录名...]
:创建新目录;-p
递归创建目录
cd /路径
:切换目录;.
当前目录;..
上一级目录;\
转义符
pwd
:显示当前目录路径
1.2 复制、剪切、删除
rmdir /路径
:删除空目录;
cp -rp [原文件][目标目录]
:复制文件或目录;-r
复制目录;-p
保留目录属性
mv [原文件][目标目录]
:剪切文件、重命名;
rm -rf [文件或目录]
:删除文件;-r
删除目录;-f
强制删除
2 文件处理命令
2.1 创建文件
touch [文件名]
:创建空文件;
2.2 查看文件内容
cat -n [文件名]
:显示文件内容;-n
显示行号;
tac -n [文件名]
:反向显示文件内容;
more [文件名]
:分页显示文件内容;
操作:空格或f——翻页;Enter——换行;q——退出;
less [文件名]
:分页显示文件内容,可向上翻页;
操作:除more
的操作外,还支持PageUp——向上翻页;↑ ——向上换行;/——调用搜索功能;n——查找下一个搜索内容;
head -n 行数 [文件名]
:显示文件内容前几行;
tail -nf 行数 [文件名]
:显示文件内容后几行;-f
动态显示文件末尾内容;
2.3 输出重定向、追加
>
:输出重定向。将原来文件的内容覆盖掉;
>>
:追加。将内容追加到文件尾部;
ls -lh > a.txt #将文件信息列表输出重定向到a.txt文件中,若文件不存在会创建
cat a.txt > b.txt #将a.txt的文件内容覆盖到b.txt
2.4 软、硬链接
ln -s [原文件] [目标文件]
:生成连接文件;-s
创建软链接
软链接:文件权限lrwxrwxrwx(类似Windows快捷方式);
只是符号链接,箭头指向源文件;
硬链接:拷贝cp -p + 同步更新;
通过i节点识别;与源文件的i节点一致
不能跨分区;
不能针对目录使用;
3 权限管理命令
chmod [mode=421]
:改变文件或目录权限;
两种方式
语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录]
[mode=421] [文件或目录]
r----4;w----2;x----1
rwx——7;rw——6;r-x——5
-R
递归修改,改变目录权限同时改变目录下所有文件的权限;
chown [用户] [文件或目录]
:改变文件或目录的所有者;
chgrp [所属组] [文件或目录]
:改变文件或目录的所有组;
umask [-S]
:显示、设置文件的缺省权限;
新建的文件是没有可执行权限的;
4 文件搜索命令
4.1 find搜索
find [搜索范围] [匹配条件]
:文件搜索;
* 匹配任意字符
?匹配任意一个字符
选项
# -name:根据文件名搜素(区分大小写)
find /tmp -name init
# -iname:根据文件名搜索(不区分大小写)
# -size +n;-size -n :根据数据块搜索;一个数据块=512字节=0.5k
find / +204800 查找大于100M的文件
# -user:根据所有者查找
# -group:根据所属组查找
# -amin:根据访问时间access查找
# -change:根据文件属性change查找
# -mmin:根据文件内容modify查找
# 连接符号:
# -a:两个条件同时满足
# -o:满足其中一个条件
find / -size +163840 -a -size -204800
# -type:根据文件类型查找:f 文件;d 目录;l 软链接文件
# -inum:根据i节点查找
# -exec 命令 {} \; 对搜索结果执行操作
# -ok 命令 {} \; 对搜索结果执行操作时进行询问
find /etc -name init* -exec ls -l {} \;
4.2 locate指令
locate [文件名]
:在文件资料库查找文件;
yum install locate # 获取locate命令
updatedb # 更新资料库
# locate -i [文件名]:不区分大小写
locate -i a.txt
新建的文件需要更新到资料库
4.3 搜索命令
which [命令]
:搜索命令所在目录及别名信息;
whereis [命令]
:搜索命令所在目录及帮助文档路径;
4.4 管道指令
grep -iv [指定字符] [文件]
:在文件中搜寻字符串匹配的行并输出;-i
不区分大小写;-v
排除指定字串
|
:管道符号。表示将前一个命令的的处理结果传递给后面的指令进行处理;
5 帮助命令
man [命令或配置文件]
:获得命令或配置文件的帮助信息;当同时获取命令帮助文档和配置文件的帮助信息;1 命令的帮助 ;5 配置文件的帮助
whatis [命令]
:查看命令的简短信息;
apropos [配置文件]
:查看配置文件的简短信息;
命令 --help
:可以查看当前命令可用的选项;
help
:查找shell内置命令的帮助信息
6 用户管理命令
6.1 添加、删除用户
useradd [新用户]
:添加新用户;
useradd -d [目录] [用户名]
:指定目录作为新创建用户的家目录;
useradd -g [所属组] [用户名]
:创建用户,并指定其所属组;
usernod -g [所属组] [用户名]
:修改用户的所属组;
userdel [用户名]
:删除指定用户名,但会保留家目录;
userdel -r [用户名]
:删除指定用户及其家目录;
6.2 修改密码
passwd
:修改当前用户密码;passwd [用户]
管理员能修改所有用户的密码;
6.3 查看、切换用户
id [用户名]
:查看指定用户信息;
su - [用户名]
:切换用户;
exit
:返回原来的用户状态
6.4 添加、删除组
groupadd [新组]
:添加新所属组;
groupdel [组名]
:删除所属组;
6.4 查看登录用户信息
whoami
:查看当前是哪个用户;
who
:查看登录用户信息:登录用户名 登录终端 登录时间(IP地址);
w
:查看登录用户详细信息;
7 压缩解压命令
7.1 gzip文件
gzip [文件]
:压缩成.gz
格式文件;不能压缩目录;
gunzip [压缩文件] /gzip -d [压缩文件]
:解压缩.gz
的压缩文件;
压缩后/解压缩后不保存源文件。
7.2 tar文件
tar [选项] [压缩后文件名] [目录]
:打包或解包;
-c
打包;-z
打包同时压缩;-v
显示详细信息;-f
指定文件名;
-x
解包;-z
解压缩;-v
显示详细信息;-f
指定解压文件名;
tar -czvf file.tar.gz files
tar -xzvf file.tar.gz
tar -xzvf file.tar.gz -C /root/ # 解压到其它文件目录
7.3 zip文件
zip 选项[-r] [压缩后文件名] [文件或目录]
:压缩文件或目录;-r
压缩目录;
unzip [压缩文件]
:解压.zip
的压缩文件
7.4 bzip2文件
bzip2 选项[-k] [文件]
:压缩.bz2
文件(与.gz
格式一样);-k
产生压缩文件后保留原文件
bunzip2 -k [文件]
:解压缩;-k
解压缩后保留原文件
bzip2 -k first.txt
tar -cjf file.tar.bz2 files
-cjf:表示打包并压缩为bz2格式
bunzip2 first.txt.bz2
tar -xjf file.tar.bz2
-xjf:表示解包并解压缩bz2格式文件
文件格式 | 压缩 | 解压
------------------------------------------------------
.gz | gzip | gunzip(gzip -d)
.tar | tar -cf | tar -xf
.zip | zip -r | unzip
.bz2 | bzip2 -k | bunzip2
.tar.gz | tar -czf | tar -xzf
.tar.bz2 | tar -cjf | tar -xjf
8 网络命令
write[用户] 内容
:给用户发信息,以Ctrl+D保存结束;
- 编辑内容时,使用Ctrl+退格键删除内容;
- 用户在线才可发送;
wall [内容]
:给所有在线用户发广播信息;
ping [选项] IP地址
:测试网络连通性;-c
指定发送次数;
ifconfig [网卡名称] [IP地址]
:查看和设置网卡信息;
mail [用户名] 内容
:发送电子邮件;
mail
查看邮件——输入邮箱序列号查看内容——h
再次查看邮箱列表——d 序列号
删除邮箱
last
:列出目前与过去登入系统的用户信息;
lastlog
:列出所有用户的最后登录信息;
traceroute [网址或网址IP]
:显示数据包到主机间的路径;
natstat [选项]
:显示网络相关信息;-t
TCP协议;-u
UDP协议;-l
监听;-r
路由;-n
显示IP地址和端口号
netstat -ltun 查看本机监听的端口
netstat -an 查看本机所有的网络连接
netstat -rn 查看本机路由表
setup
:配置网络;
mount [-t 文件系统] 设备文件名 挂载点
:挂载设备
umount 设备文件名
:卸载挂载点
mkdir /mnt/cdrom 设置挂载点
mount -t iso9660 /dev/sr0 /mnt/cdrom/ 挂载设备
mount /dev/sr0 /mnt/cdrom/
umount /dev/sr0 卸载挂载点
cd /mnt/cdrom/ 访问挂载点
9 关机重启命令
shutdown [选项] 时间
:关机;-c
取消前一个关机命令;-h
关机;-r
重启
shutdown -h now 现在关机
shutdown -h 20:00 20:00关机
halt
:直接使用,等价于立即关机;
reboot
:重新启动计算机;
sync
:把内存的数据同步到磁盘上;
通过runlevel
显示当前系统的运行级别,init _
设置运行级别;
logout
:用户注销;
5、Vim
所有的Linux系统都会内建 vi 文本编辑器。Vim 具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
5.1 三种常见模式
-
正常模式
正常模式下,不能插入文本内容;但可以使用快捷键编辑文本;
-
插入模式
使用
a、A;o、O;i、I;r、R
快捷键,可以进入编辑文本模式;一般使用i
即可; -
命令行模式
提供相关指令,完成读取、存盘、替换、离开 vim 、显示行号等动作则是在此模式中达成的;
5.2 快捷键命令
-
插入命令
a
在光标所在字符后插入内容;A
在光标所在行尾插入;i
在光标所在字符亲插入;I
在光标所在行行首插入;o
在光标下插入新行;O
在光标上插入新行; -
定位命令
:set nu
设置行号;:set nonu
取消行号;G
到最后一行;nG
到第n行;:n
到第n行; -
删除命令
x
删除光标所在字符;nx
删除光标之后n个字符;dd
删除光标所在行内容;ndd
删除光标所在行起n行内容;dG
删除光标所在处起至文件末尾内容;D
删除光标所在处到行尾内容; -
复制剪切命令
yy
复制当前行;nyy
复制当前行以下n行;dd
剪切当前行;ndd
剪切当前行以下n行;p
粘贴在当前光标所在行下;P
粘贴在当前光标所在行上; -
替换取消命令
r
取代光标处字符;R
从光标所在处起替换字符,按ESC结束;u
取消上一步操作; -
搜索命令
/string
搜索指定字符串;:set ic
忽略大小写;set noic
区分大小写;n
搜索指定字符串的下一个出现位置;:%s/old/new/g
全文替换指定字符;:%s/old/new/c
每次替换前询问;:n1,n2s/old/new/g
在一定范围内替换内容; -
保存退出命令
:w
保存修改;:w newFileName
另存为指定文件;:q
退出;:wq
保存退出;ZZ
保存退出,快捷键;:q!
不保存修改退出;:wq!
保存修改并退出,在不允许写入的文件内进行保存修改(仅文件所有者及root);
5.3 Vim技巧
导入命令执行结果
导入命令:-r 文件
-r /tmp/readme.msge
执行:!命令(在vim中执行命令但不影响文件内容)
-r !命令:将命令的执行结果导入文件光标处
-r !date
定义快捷键
:map 快捷键 触发命令 —— 快捷键:Crtl+v+p = ^p
:map ^p I#<ESC> 设置Crtl+P快捷键为跳到行首添加#
连续行注释
:n1,n2s/^/#/g 在n1,n2行首添加#,^表示行首添加
:n1,n2s/^#//g 将n1,n2行首的#删除
替换
ab 输入内容 替换内容
ab email [email protected]——在vim中输入email空格或换行可替换成真正的邮箱
永久保存快捷键
在/root目录或用户目录下,创建配置文件 .vimrc
设置快捷键
例如: /root/.vimrc、/home/username/.vimrc
set nu
map ^p I#<ESC>
map ^B 0x
ab email [email protected]
6、软件包管理
源码包:源代码开源包;编译安装,更稳定效率更高;卸载方便(直接删除);
二进制包:源码包进行编译之后的软件包(RPM包、系统默认包);二进制包便于安装,只需几个命令就可以安装、升级、查询和卸载;
缺点:经过编译,无法查看源码;功能选择比源码不灵活;依赖性高
6.1 RPM包管理
RPM包命名原则
软件包名-软件版本-软件发型次数.适合的Linux平台.适合的硬件平台.rpm包扩展名
RPM包依赖性
- 树形依赖:a→b→c(先安装c,最后安装a)(先卸载a,最后卸载c)
- 环形依赖:a→b→c→a(一条命令同时安装abc包)
- 模块依赖:模块依赖查询网址
包全名:操作的包是没有安装的软件包时。使用包全名,而且要注意路径;
包名:操作已经安装的软件包,使用包名。是搜索/var/lib/rom
中的数据库;
6.2 rpm管理
1. 安装
rpm -ivh 包全名
;-i
安装;-v
显示详细信息;-h
显示进度;--nodeps
不检测依赖性
2. 升4级
rmp -Uvh 包全名
;-U
升级
3. 卸载
rpm -e 包名
;-e
卸载;--nodeps
不检查依赖性
4. 查询
rpm -q 包名
:检查包是否安装
rpm -qa
:查询所有已安装的包
rpm -qi 包名
:查询包名的详细信息;-i
查询软件信息;-p
查询未安装包(包全名)信息
rpm -ql 包名
:查询包的文件安装位置;-l
列表;-p
查询未安装包(包全名)信息
rpm -qf 系统文件名
:查询系统文件名属于哪个RPM包;-f
查询系统文件属于哪个软件包 (file)
rpm -qR 包名
:查询软件的依赖性;R
查询软件包的依赖性;-p
查询未安装包(包全名)信息
5. 包校验
rpm -V 已安装的包名
:校验软件的系统文件是否被其他人修改;-V
校验指定RPM包的文件
RPM包文件提取
rpm2cpio 包全名 cpio|-idv .文件绝对路径
:把包中的某个文件提取到当前路径
rpm2cpio 将rpm包转换为cpio格式命令
cpio 用于创建软件档案文件和从档案文件中提取文件
cpio 选项 <文件名
-i:copy-in模式,还原
-d:还原时自动创建目录
-v:显示还原过程
6.3 yum在线管理
yum命令
yum list
:查询所有可用软件列表
yum search 关键字
:搜索服务器上所有和关键字相关的包
yum -y install 包名
:安装;-y
自动回答yess
yum -y update 包名
:升级;-y
自动回答yes
yum -y remove 包名
:卸载
yum grouplist
:列出所有可用的软件组列表,可查询组名
yum groupinstall 软件组名
:安装指定软件组
yum groupremove 软件组名
:卸载指定软件组
7、系统管理
7.1 任务调度
任务调度:指系统在某个时间执行特定的命令或程序;
crontab [选项]
:进行定时任务的设置;-e
编辑定时任务;-l
查询任务;-r
删除当前用户的所有任务;
crontab -e
# 进入任务编辑
# */1 * * * * ls -l >> do.txt
5个占位符的说明
项目 | 含义 | 范围 |
---|---|---|
第一个 * |
一小时中的第几分钟 | 0 - 59 |
第二个 * |
一天中的第几小时 | 0 - 23 |
第三个 * |
一月中的第几天 | 1 - 31 |
第四个 * |
一年中的第几个月 | 1 - 12 |
第五个 * |
一周中的星期几 | 0 - 7(0,7都表示星期日) |
特殊符号
特殊符号 | 描述 |
---|---|
* |
表示任何时间。 |
, |
代表不连续时间。比如0 8,12 * * * :代表每天的8点0分、12点0分执行任务 |
- |
代表连续的时间范围。比如0 5 * * 1-5 :代表周一到周五的5点0分执行任务 |
*/1 |
代表每隔多久执行。比如*/1 * * * * :代表每隔1分钟执行一次任务 |
service crond restart
:重启任务调度
7.2 进程管理
1. 基本介绍
- 在LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。
- 每一个进程都会对应一个父进程,而这个父进程可以复制多个子进程。例如:www服务器。
- 每个进程都可能以两种方式存在:前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才才结束。
2. 系统进程的显示
ps
:显示目前系统中执行的进程;-a
显示当前终端的所有进程信息;-u
:以用户的格式显示进程信息;-x
显示后台进程运行的参数
显示进程的信息
列名 | 描述信息 |
---|---|
USER | 用户名称 |
PID | 进程号 |
VSZ | 进程占用的虚拟内存大小(单位:KB) |
RSS | 进程占用的物理内存大小(单位:KB) |
TT | 终端名称(缩写) |
STAT | 进程状态,其中 S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等 |
START | 进程的启动时间 |
TIME | 即进程使用CPU的总时间 |
COMMAND | 启动进程所用的命令和参数,如果过长会被截断显示 |
ps -ef
:以全格式显示当前所有的进程,查看进程的父进程;-e
显示所有进程;-f
全格式显示;
3. 终止进程
kill -9 [进程号]
:杀死指定进程号的进程;-9
强制立即停止进程
killall [进程名]
:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用;
4. 进程的监控
4.1 动态监控
top与ps命令很相似,都是用来显示正在执行的进程。top与ps最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。
top [选项]
:查看执行的进程;-d 秒数
指定top命令隔几秒更新,默认3秒;-i
不显示闲置或僵死进程;-p
通过指定进程ID来监控某个进程的状态;
交互操作
操作 | 功能 |
---|---|
P | 以CPU使用率排序(默认项) |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
4.2 监控网络服务
netstat [选项]
:查看系统网络情况;-an
按一定排序输出;-p
显示哪个进程在调用;
7.3 服务管理
服务(service) 本质就是进程,但是运行在后台,通常会监听某个端口,等待其它程序的请求,比如(mysql , sshd防火墙等),因此我们又称为守护进程。
service [start|stop|restart|reload|status] [服务名]
:服务的开启、停止、重启、重加载、查看状态;
centOS7.0之后使用的是systemctl
指令。
1 查看服务
目录/etc/init.d/
下可以查看所有服务。centos7使用systemctl list-unit-files
可以列出所有的服务。
系统各个运行级别下设置服务的自启动(centOS 7.0之前)
chkconfig
:给每个服务在各个运行级别时设置是否自启动。
chkconfig --list
:查看所有服务的自启动状态
chkconfig [服务名] --list
:查看指定服务的自启动状态
chkconfig --level [级别] [服务名] on/off
:指定服务在某个级别下是否自启动
centOS 7.0
systemctl --type service
:查看服务
systemctl enable [服务名]
:指定服务自启动
systemctl disable [服务名]
:指定服务不自启动
2 防火墙
firewall-cmd --state
:查看防火墙状态
firewall-cmd --zone=public --list-ports
:查看防火墙所有开放的端口
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
:开放指定端口
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
:关闭指定端口
firewall-cmd --reload
:配置立即生效
systemctl [start][restart][stop] firewalld.service
:开启、重启、关闭防火墙
netstat -lnpt
:查看监听端口。无netstat
命令时,需安装 yum install -y net-tools
-l
仅列出在Listen(监听)的服务状态;-t
(tcp) 仅显示tcp相关选项;-u
(udp)仅显示udp相关选项;-n
拒绝显示别名,能显示数字的全部转化为数字;-p
显示建立相关链接的程序名