文件目录结构
/bin/ :存放系统命令的目录,普通用户和超级用户都可以执行,不过放在/bin下的命令在单用户模式下可以执行
/sbin/:保存和系统环境设置相关的命令,只要超级用户可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看
/usr/bin/:存放系统命令的目录,普通用户和超级用户都可以执行,这些命令和系统自动无关,在单模式下不能执行
/usr/sbin/:存放根文件系统不必要的系统命令,例如多数服务程序,只有超级用户可以使用,(sbin目录种的命令,只有超级用户可以使用,bin目录保存的命令,所有用户都能使用)
/boot/:系统启动目录,保存系统启动相关的文件,如内核文件和启动引导程序文件等,(不是很大,尽量不要往里面放文件)
/dev/:设备文件保存位置,我们已经说过,linux种所有内容都以文件的形式保存,包括硬件,这个目录就是用来保存所有硬件设备文件的
/etc/:配置文件保存位置,系统种所有采用默认安装方式(rpm安装)安装的服务的配置文件,都保存在这个目录中,如用户账号和密码,服务启动的脚本,常用服务的配置文件等
/home/:普通用的家目录,建立没个用户时,没个用户要有一个默认登陆位置,这个位置就是这个用户的家目录,所有普通用户的家目录就是在/home下建立一个和用户名相同的目录,
/lib/:系统调用的函数库保存位置
/lost+found/:当系统意外崩溃或者机器断电意外关机,而产生一些文件碎片放在这里,当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统,这个目录只在每个分区中出现,
/media/:挂载目录,系统建议时用来挂载媒体设备(基本不用)
/mnt/:挂载目录,之前linux只有这一个挂载目录,没有细分,可以自己新建文件夹,挂载硬盘,U盘,光盘,
/misc/:挂载目录,系统建议用来挂载NFS服务的共享目录,一个空的目录就可以作为挂载点,系统默认了三个挂载点,但是怎么用,在自己,可以新建一个/mnt/usb。挂载U盘。可以新建一个/mnt/cdrom。挂载光盘
/opt/:第三方安装的软件保存位置,这个目录就是安装和防止其他软件的位置,手工安装的源码包软件,可以安装到这个目录中,不过还是更习惯将软件防止到/usr/local/目录中
/proc/:虚拟文件系统,该目录中的数据并不会保存到硬盘中,而是保存在内存中,主要保存系统的内核,进程,外部设备和网络状态等,如/proc/cpuinfo,时保存CPU信息的
/sys/:虚拟文件系统,和/proc目录类似,都是保存在内存当中的,主要是保存于内核相关信息的
/root/:超级用户的家目录
/srv/:服务数据目录,一些系统服务启动之后,可以在这个目录中保存所需要的数据,
/tmp/:临时目录,系统存放临时文件的目录,该目录下所有用户都可以访问和写入,建议不要在此目录中保存重要数据,最后每次开机清空一下目录
/usr/:系统软件资源目录,存放系统软件资源的目录,系统中安装的软件大部分都保存在这
/var/:动态数据保存位置,主要保存,缓存,日志,或者软件运行所产生的文件
命令格式
命令格式: 命令 [-选项] [参数]
比如: ls -la /etc
说明
选项不一定要有,可以不写
个别命令使用不遵循此格式
当有多个选项时,可以写在一起
选项有两种 简化选项跟完整选项,-a时简化,—all是完整
文件处理命令
目录使用
ls 查看目录
ls -选项 文件或者目录
-a:显示所有文件
-l :详细信息显示
-d:查看目录属性
-h:大小用K,MB,表示(通用的-h)
-i:查看文件的id号
mkdir 创建新目录
mkdir -选项 目录名
-p :递归创建,在不存在的目录下,创建目录
可以多个
mkdir /tmp/jaak/dhq /tmp/fwedw/fwe
cd 切换目录
cd 目录
cd /tmp/de 指定目录
cd .. 上一级目录
pwd 显示当前目录
pwd
rmdir 删除空目录(只能删除空目录)
rmdir 目录名
rmdir /tmp/dedu
cp 复制目录或者文件
cp -选项 原文件或目录 目目录或者文件(可以改名字,可以一覅复制多个)
-r:复制目录
-p:保留属性(比如创建时间啊)
cp -r /tmp/diyige/shanbudiao/ /tmp/dierge/shanbusahn/
/是复制到目录下的意思
mv 剪切文件或者目录
mv 源文件或目录 目标目录或文件
mv gaiming/ /tmp/
可以剪切多个,也可以剪切到当前文件夹,也就是改名
rmtouch 删除文件或者目录
rm -选项 文件或者目录
-r :删除目录
-f:强制删除 (如果不加,就会询问你是否删除)
rm -rf shanbusahn/
文件使用
touch 创建空文件
touch 文件名
touch name
cat 查看文件
cat -选项 文件名
-n: 显示行号
cat -n name
tac 查看文件,反向列示(跟cat相反,文件倒着看)
cat 文件名
cat name
more 分页查看文件内容
more 文件名
分页操作
(空格)或f :翻页
(Enter回车):换行
q或者Q:退出
more /etc/services
less 分页查看文件内容(可以搜索上翻页)
less 文件名
分页操作(除了more之外的)
(pgup):向上翻页
向上箭头:上一行(如果笔记本pgup跟箭头是一个键。就用En+箭头,就是pgup翻页了,8版本后可以用b向上翻页,k是上一行)
/+文字:搜索功能,n下一个
less /etc/services
head 查看文件指定行数内容
head -选项 文件名
-n :指定行数 -n 30,不写选项会模式10行
head -n 2 /etc/services
tail 查看文件末尾几行内容
tail -选项 文件名
-n:指定行数。-n 39
-f:动态的显示文件内容
tail -n 5 -f /etc/services
链接
ln 生成链接文件
ln -选项 源文件 目标文件
-s :创建软链接
ln -s /etc/issue /tmp/issue.soft
ln /etc/issue /tmp/issue.soft
软链接
软连接文件的权限是777,文件开头是l,相当于指向了源文件,其实权限最后需要看源文件的权限
文件大小只有10,只是一个指向
/tmp/issue.soft -> /etc/issue
硬链接
相当于-p属性拷贝复制了一份,没有什么区别,跟源文件
两个文件的i节点id 是一样的,所有源文件修改,对应文件也修改了,源文件删除,硬链接文件不影响
不能对目录进行硬链接
不能跨分区硬链接
权限命令
chmod 改变文件或者目录权限
chmod -选项 [两种方式] 文件或者目录
-R :递归修改,目录之下所有权限都修改
chomd -R u+w,o-x /tmp/dewdqwd
chomd -R 761 /tmp/dewdqwd
方式
chmod -选项 [ugoa] [+-=] [rwx] 文件或者目录 (不常用)
u:所有者 +:加上某个权限
g:所属组 -:去掉某个权限
o:其他人 =:将权限替换为某个权限
a:所有人,ugo都包含
r:读权限:文件(查看文件内容),目录(列出目录内容)
w:写权限:文件(修改文件内容),目录(在目录中创建,删除文件)目录有写权限,就可以删除目录内的文件,文件不用有写权限
x:执行权限:文件(执行文件),目录(可以进入目录)
chmod -选项 [421] 文件目录
r(读权限,4),w(写权限,2),x(执行权限,1)
用数字权限直接替换现有权限
chown 修改目录或文件的所有者
chown 用户 文件或者目录(只能是root用户,有这个权限,而且用户一定要存在)
chown www /tmp/dewde
chown 文件所有者:文件所属组 文件名
chgrp 修改文件或目录的所属组
chgrp 用户组 文件或者目录
chgrp www /tmp/dwedew
umask 查看默认新建文件或者目录的权限设置
umask -选项
-S:以rwx形式显示新建文件的缺省权限,
umask -S
umask 700 可以更改默认的权限设置,(通过与运算,决定默认权限的)
文件搜索命令
find 文件搜索
find 搜索范围 匹配条件/选项(很多种)
匹配条件
-name :在etc目录下,查找文件名为 init的文件,全等于
find /etc -name init
如果需要模糊搜索用 init,包含起来。用在开头结尾都行,如果知道具体几个字符,可以用??,替代,linux区分大小写,如果想要不区分,用 -iname 选项来搜索
-size :根据大小来查找文件
find /etc -size +200
+(大于多少),-(小于多少),=(等于多少)。这里的大小是数据块,512字节,0.5k,如果是大于100kb的文件,就是 find /etc -size +200
-user :根据所有者来查找文件
find /etc -user www
-group :根据所属组来查找文件
find /etc -group www
-cmin :根据修改时间来查找文件
find /etc -cmin -4
-amin:访问时间;-cmin:文件属性;-mmin:文件内容
“-”是多少时间内,“+”是多少时间外
-type:根据文件类型查找
find /etc -type f
f:文件,d:目录,l:软链接文件
-inum:根据i节点查找
find /etc -inum 2333
-a:将多个条件拼接在一起
find /etc -name init -a -type f
-a:同时满足,-o:一个满足即可
-exec/-ok:对查找结果进行操作
find /etc -name init -a -type f -exec ls -l {} \;
-exec 是拼接用的,-ok 也是拼接用的,不过会依次问你是否执行
{} \;是固定的格式
locate 文件搜索命名
locate 文件名
locate dw.conf
这个是是直接在一个文件资料库查找的,很快,资料库定时更新(/tmp,目录不在同步范围内)
手动更新资料库 updatedb
不区分大小写,如果想要区分需要加 -选项(-i) locate -i dw.conf
which 查找命令所在目录及别命信息
which ls
别名是一些默认的配置,咱们用的就是简化的,省略
whereis 查找命令所在目录已经帮助文档路径
whereis ls
grep 在文件中搜索字符换的行,并输出
grep -选项 指定字符串 文件
-i 不区分大小写
-v 排除指定字符 (比如#的开头注释,不看了 就^#)
grep -i add /tmp/dwdw
grep -v ^# add /tmp/dwdw
帮助命令
man 获取帮助命令(获取命令的帮助信息,配置文件的帮助信息)
man 命令/配置文件
man ls
跟使用查看文件命令一样,换行搜索
man services
配置文件的话,不需要绝对路径,只需要一个路径名,有时候命令跟配置文件一样的话,会显示命令的帮助文件 可以加数字区分,1是命令 5是配置文件 man 5 services
whatis 获取命令的字面解释意思
whatis ls
直接获取命令的意思,不过有的没有生成查询数据库,需要手动执行一次才行
apropos 获取配置文件的字面解释意思
apropos inittab
—help 获取命令的选项
touch —help
info 获取命令的帮助信息
info ls
help 获取shell内置命令的帮助信息
help cd
找不到命令所在位置的,就都是内置命令
用户命令
useradd 添加用户
useradd 用户名
useradd yuangang
只是添加了一个账号,跟家目录,没有密码,不能登陆
passwd 设置密码
passwd 用户名
passwd yuangang
密码不能太过简单,root可以
who 查看登陆用户信息
who
w 信息更多
压缩命令
gzip 压缩文件
gzip 文件名
gzip dehw.php
压缩后的文件名称后缀是 dehw.php.gz,而且不保留源文件,只能压缩文件,不能压缩目录
gunzip 解压缩命令(gzip 对应的解压缩)
gunzip 压缩文件名
gunzip conf.php.gz
tar 打包压缩目录
tar -选项 压缩后的文件名 目标文件
-c:打包
-v:显示详细信息
-f:指定文件名
-z:打包同时压缩
tar -zcvf tian.tar.gz tian/
-x:解包
-z:解压缩
tar -zxvf tian.tar.gz
-v可用可不用 -f要放在后面
zip 压缩文件或者目录
zip -选项 压缩后文件名,文件胡总和目录
-r :压缩目录
zip dede.php.zip dede.php
压缩后保留源文件
unzip 解zip压缩文件
unzip de.zip
bzip2 压缩文件
bzip2 选项 文件
-k:压缩后保留源文件
bzip2 -k dww
tar -cjf jiangdw.tar.bz2 dqididn
bunzip2 解压缩文件
bunzip2 选项 压缩文件
-k:解压缩后包保留源文件
bunzip -k dwq.bz2
tar -xjf dwq.tar.bz2
网络命令
write 给用户发信息
write 用户名
给用户发送信息,Ctrl+D保存结束,如果用户没有登陆,发不出去
wall 给所有用户发消息
wall 消息内容
当前所有登陆用户都会收到
ping 测试网络联通信
ping 选项 IP地址
-c:指定ping 的次数
ping -c 3 121.4.246.238
ifconfig 查看和设置网卡信息
ifconfig 网卡名称 ip地址
可以直接输入ifconfig 就是查看,root才有权限
mail 查看发送电子邮件
mail 用户名 (发送邮件)
mail(查看邮件信息,编号看信息,h是查看目录,d 编号,删除,q退出)
last 查看所有用户的目前跟过去登陆系统的用户信息
last
lastlog 用户的最后一次登陆时间
lastlog 选项 用户uid
-u:查看你固定用户的最后一次登陆时间 根据uid
lastlog -u 222
traceroute 显示数据包到主机之间的路径
reaceroute www.baidu.com
netstat 显示网络相关信息
netstat 选项
-t:TCP协议
-u:UDP协议
-l:监听
-r:路由
-n:显示IP地址跟端口号
netstat -tlun:查看本机监听的所有端口
netstat -an :查看本机所有的网络请求
netstat -rn :查看本机路由表
setup 配置网络
setup
有的可能没有这个
mount 挂载命令
mount [-t 文件系统(可以省略)] 设备文件名(固定的) 挂载点
mount -t iso9660 /dev/sr0 /mnt/cdrom
这个挂载光盘,相当于一个外部的u盘,自动识别
umount 命令卸载
umount 挂载点目录
umount /mnt/cdrom
必须出来后,才能执行,不能再目录内卸载
关机命令
shutdown 关机命令
shutdown 选项 时间
-c:取消上一个关机命令
-h:关机
-r:重启
shutdown -h now:立即
shutdown -h 20:30 定时关机
其他关机命令
halt
poweroff
init 0
重启命令
reboot
init 6(6是系统运行级别 cat /etc/inittab 可以看,runlevel 查看你当前级别)
logout 退出登陆
logout
vim编辑器
vim 有三种模式,
命令模式:首次进入文件就是命令模式,输入的都是命令字符,Esc键
插入模式:命令模式下摁键 i a o
编辑模式:命令模式下摁键 :可以输入命令
插入命令
a:在光标所在字符后插入
A:在光标所在行尾插入
i:在光标所在字符前插入
I:在光标所在行行首插入
o:在光标下插入新行
O:在光标上插入新行
定位命令
:set nu 设置行号
:set nonu 取消行号
gg 到第一行
G 到最后一行
nG 到第几行 例子 3G
:n 到第几行 例子 :2
$ 移动至行尾
0 移动至行首
删除命令
x 删除光标所在处字符
nx 删除光标所处后n个字符
dd 删除光标所在行,ndd删除n行
dG 删除光标所在行到文件末尾的内容
D 删除光标所在处到行尾的内容
:nl.n2d 删除指定范围的行 例子 :22.33d
复制和剪切命令
yy 复制当前行
nyy 复制当前行以下n行(包含本行)
dd 剪切当前行
ndd 剪切当前行以下n行
p 粘贴在当前光标所在行下
P 粘贴在当前光标所在行上
替换和取消命令
r 取代光标所在处字符
R 从光标所在处开始替换字符,按Esc结束
u 取消上一步操作
搜索和搜索替换
/string / 搜索指定的而字符串,如果需要忽略大小写, :set ic,取消高亮的话 :nohl
n 搜搜指定下一个出现位置
:%s/old/new/g 全文替换执行内容 :%s/hahah/huande/g 如果/c是每次都询问
:n1,n2s/old/new/g 一定范围替换执行内容 :%2,4s/hahah/huande/g
保存和退出命令
:w 保存修改
:w 新的名字 另存为指定文件
:wq 保存修改并退出
ZZ 快捷键,保存修改并退出
:q! 不保存修改退出
:wq! 保存修改并退出(文件所有者跟root可用,就算没有了修改权限,强制的保存退出)
其他命令
导入文件,导入命令执行结果
:r 文件名,将文件内容导入到光标下 :r /tmp/fewfw.php
:r !命令 ,将命令执行结果写入到文件光标下 :r !data 时间写入
定义快捷键
:map 快捷键 触发命令
:map ^P I#
”^P“这个是Ctrl+v+p键,组合恩出来的
连续行注释
:n1,n2s/^/#/g
:n1,n4s/^/\/\//g 需要用\来转义
:1,3s/^/\/\//g
^表示行首
替换
:ab 输入的 替换的
:ab emile 1919191qq.com
输入 emile 回车 自动替换为 1919191qq.com
这几个命令 定义后,有用,重启服务器,就没有了,需要将这些写到配置文件中,配置文件在每个用户的个更目录 比如/root/.vimrc 文件,将配置的命令写入里面,就一直有效了
安装包
软件包安装分为 源码包(脚本安装包)和二进制包(RPM包。系统默认包)
源码包
优点
开源,如果有足够的能力,可以修改源代码,
可以自由选择所需的功能
软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高,
卸载方便
缺点
安装过程步骤较多,比较麻烦安装,命令很多
编译过程时间较长,安装比二进制安装时间长
因为是编译安装,安装过程中一旦报错,新手很难解决
RPM包,二进制包
优点
包管理系统简单,只通过几个命令就可以实现包的安装,升级,查询和卸载,
安装速度比源码包安装快很多
缺点
经过编译,不再可以看到源代码
功能选择不如源码包灵活
依赖性强。需要先安装依赖,依赖还有依赖
RPM包安装
rpm 选项 包全名
-i 安装
-v 显示详细信息
-h 显示进度
—nodeps 不检测依赖性(不能用)
rpm -ivh ihfdeffbwef. rpm
RPM包更新
rpm -Uvh 包全名
RPM包卸载
rpm -e 包名 rpm -e nginx
安装包是否安装
rpm -q 包名 是否安装
rpm -qa 全部安装的rpm包 rpm -qa | grop 关键字 相关的包
查询
rpm -qi 包名 详细信息
rpm -qip 包全名 未安装的包详细信息
rpm -ql 包名 包安装位置 -p未安装的包 用全名
rpm -qf 系统文件名 查询文件属于哪个软件包
rpm -qR 包名 查询软件包的依赖性 -p未安装的包 用全名
rpm -V 以安装的包名 校验包中的文件
rpm2cpio 包全名 | cpio -idv .文件绝对路径 从包中提取文件,不用安装 例子: rpm2cpio /mnt/cdrom/33333.dd3.rpm | cpio -idv ./bin/ls
yum 在线管理
查看yum包
yum list
搜索yum包
yum search 关键字
安装yum包
yum -y install 包名
升级yum包
yum -y update 包名 (必须跟包名)
卸载yum包
yum-y remove 包名(一些共用依赖也会卸载)
用户
文件地址
/etc/passwd 用户信息
/etc/shadow 影子文件 用户密码
/etc/group 组文件
/etc/gshadow 组密码文件
添加用户
useradd 选项 用户名
-u UID:手动指定用户的UID号
-d 家目录:手工指定用户的家目录
-c 用户说明:手工指定用户的说明
-g 组名:手工指定用户的初始组
-G 组名:指定用户的附加组
-s shell:手工指定用户的登陆shell
密码
passwd 选项 用户名
-S : 查询用户密码的密码状态,仅root用户可见
-l :暂时锁定用户,仅root用户可见
-u :解锁用户,仅root用户可用
—stdin :可以通过管道符输出的数据作为用户的密码
修改用户
usermod 选项 用户名
-u UID:手动指定用户的UID号
-c 用户说明:手工指定用户的说明
-g 组名:手工指定用户的初始组
-L :临时锁定用户
-U :解锁用户锁定
修改密码状态
chage 选项 用户名
-l :列出用户的详细密码状态
-d 日期:修改密码最后一IC更改日期
-m 天数:两次尼玛修改间隔
-M 天数:密码有效期
-W 天数:尼玛过期前警告天数
-I 天数:密码过后宽限天数
-E 日期:账号失效时间
删除用户
userdel -r 用户名
-t :删除用户同时删除用户家目录
查看用户id
切换用户身份
su 选项 用户名
- :顺带切换环境变量
su 选项 用户名 -c “ll”:不切换用户,只是执行命令
添加用户组
修改组
groupmod 选项 组名
-g GID:修改组ID
-n 新组名:修改组名
删除组名
groupdel 组名
用户加入组或者组中删除
gpasswd 选项 组名
-a 用户名:把用户名加入组
-d 用户名:把用户从组中删除
进程
systemctl list-unit-files 查看服务所有的 systemctl list-unit-files | grep crond
ps aux :查看所有进程
ps -ls :查看所有进程
top 选项 :查看系统健康状态
-d 秒数:几秒刷新一次,默认是3秒
在top命令中的交互模式可以执行的命令
?或h 显示交互模式的帮助
p 以cpu使用率排序,默认
m 内存
n PID
q 退出
pstree 选项 查看进程树
-p:显示进程的PID
-u:显示进程的所属用户
kill -状态 pid 处理进程
-1 重启进程
-9 强制杀死进程 (默认可以不写)
pkill -t -9 用户终端号, 踢出登
随便一个命令 & 将进程放在后台
命令执行中 摁下ctrl+z快捷键 进程放在后台(会暂停运行)
jobs -l 显示后台的进程
fg %工作号 后台暂停的进程,前台执行
bg %工作号 后台暂停的进程,后台运行(如果需要交互,则不能运行比如top)
vmstat 刷新时间 刷新次数 监控系统资源,类似top
dmesg 查看内核检测信息 dmesg | gtep CPU
free 选项 查看内存使用状态
uname 选项 查看系统内核信息
file /bin/ls 查看位数
lsb_release -a 查看linux的发行版本
定时任务
定时任务需要一个服务 crond 默认就是开启的
crontab 选项 写定时任务
-e 编辑定时任务 会打开编辑页面 * 执行的命令
-l 查询任务
-r 删除当前用户的所有任务
mysql 修改user 表后需要刷新 FLUSH PRIVILEGES;
自启动把启动命令放在启动脚本内 /ect/rc.d/rc.local
systemctl start nginx