Linux系统诞生于1993年,由芬兰大学生李纳斯(Linus Torvalds)和后来陆续加入的众多的爱好者共同开发完成。 Linux是开源软件,源代码开放的UnIX
命令行下输入 vim 文件名 进入一般模式(正常模式) 可以创建新文件也可以修改已有文件
正常模式下输入i或者a或者o进入编辑模式 退出编辑模式使用ESC
正常模式下输入:或/进入命令行模式 ,退出命令行模式使用ESC
: set numer/nu 设置行号
:set nonu 取消行号
a 在光标所在字符后插入
A 在光标所在行尾插入
i 在光标所在字符前插入
I 在光标所在行首插入
o 在光标下插入新行
O 在光标上插入新行
gg到文件的第一行
G到文件的最后一行
nG 到文件的第n行
:n 到文件的第n行
0 移动到行首
$移动到行尾
x 删除光标所在处的字符
nx 删除光标所在处后的n个字符
dd删除光标所在行
ndd删除n行
dG删除光标到行尾的所有的内容
D删除光标所在处到该行行尾所在行的所有内容
:n1,n2d删除n1到n2的行所有内容
yy 复制当前行的内容
nyy 复制当前以下的n行
dd 剪切当前行
ndd 剪切当前以下的n行
p 粘贴在当前光标的下一行
P:粘贴在当前光标的上一行
在命令行模式下 :wq 保存当前内容并且退出 :q! 不保存当前内容且强制退出 :q 是不做任何修改时,退出。若做了修改,需要使用:q! 才可以强制退出
ZZ相当于:wq 保存修改并退出
:w 保存修改不退出
:w 指定的目录文件 另存为指定文件
:wq! 文件的所有者以及root可以使用
(带有:的是在命令行模式下,其他都在正常模式下进行,都需要退出插入模式)
R 从光标开始处开始进行字符替换,esc结束
u 取消上一次操作
/string 搜索指定的字符串 :set ic 搜索时忽略大小写 n 搜索结果向下翻
%s/替换的目标/替换的值/g 全文替换指定的字符串 g 询问提示 c 不询问提示
8,16s/替换目标/替换的值/g 在8到16行内替换指定的字符串
:map Ctrl V Ctrl P I#<ESC> Ctrl P 为光标所在行加上注释并退出
:map Ctrl V Ctrl B 0x Ctrl B 去掉本行的注释
:r 文件目录 将文件的内容导入此vim编辑器中
:r !命令 将命令的结果导入vim编辑器中
shutdown -h now 立即关机
halt 立即关机
shutdown -h 1 一分钟后关机
reboot 立即重启
shutdown -r now 立即重启
创建用户: useradd 用户名 (此时默认的分组名是用户名)
设定密码 : passwd 用户名
指定组名 : useradd -d 组名 用户名
who : 查看用户登陆信息
第一个root 代表服务器启动时root登陆
第二个root代表远程登陆(XShell)
第三个root代表服务器启用终端登陆
:0代表本地登陆
pts代表远程登陆 使用不同的数字区分不同的远程终端
w :查看用户登陆的详细信息
uptime 查看用户登陆一些基本信息
userdel 用户名
id 用户名
su - 用户名
高权限用户向普通用户切换时不需要密码 反之则需要
exit 返回之前用户
groupadd 组名
useradd - g 组名 用户名 :将用户分配到指定的组中
-d 和-g给用户分配组名的区别: 前者给用户创建一个之前不存在的组名,后者给用户分配已经创建完成的组
groupdel 组名
usermod -g :新的组名 用户
/etc/passwd :用户的配置文件 记录用户的各种信息
/etc/shadow :口令的配置文件
/etx/group : 组的配置文件 记录linux包含组的信息
runlevel :查看当前运行级别
man [指令] /配置文件 查看命令或者配置文件的帮助信息,当查看配置文件时不用加配置文件的绝对路径 ,直接加配置文件名即可
whatis 命令 查询命令的简单介绍
apropos 配置文件 查询配置文件信息
命令 --help 获取命令的主要的信息
info 命令 和man差不多
help 命令 查看linux内置的命令
pwd: 显示当前工作目录的绝对路径
ls [选项] 【文件或目录】
选项包括 a, l
ls -l : 表示以列表的形式显示当前目录下所有的文件
ls -a 表示显示当前目录下所有的文件包括隐藏的文件或文件夹
ls -d 显示当前目录的信息
ls -i 查看文件的inode号
mkdir 目录名 创建一层目录
mkdir -p 目录名 创建多级目录
rmdir 目录名 删除空的目录
rm -rf 目录名 删除不为空的目录
touch 文件名
cp resource target 将resource复制到目标目录下
cp -r resouce taget 使用递归将文件夹下所以的文件全部复制到目标目录下
\cp -r resouce taget 强制覆盖以存在的文件
cp -p 保存文件的原有属性
rm 【选项】文件名或目录名
选项 :-r 删除整个目录 -f 强制删除没有提示信息
mv 重命名文件或者移动文件
当在同一个目录下移动文件就是重命名 mv oldFileName newFileName
当前后目录不同时就是移动文件夹 mv oldFileName /root/;将oldFileName移动到root目录下
cat 【选项】文件名 | more :只读的方式|分页的形式查看文件 选项为 -n: 可以显示行号
more指令
more 文件 :分页的形式查看文件
enter :一行一行看
空格 一页一页查看
ctrl+B : 查看上一页
ctrl+f或f 查看下一页
q或Q 立即离开文件内容
= 显示当前的行号
:f 显示文件名和当前的行号
less指令
less 文件 方便查看大型文件 ,一次只加载一页
enter 一次查看一行
空格 一次查看一页
上箭头 :向上翻页
下箭头 向下翻页
q 退出该文件
/字符串 向下查找字符串 n 向下查找 N 向上查找
?字符串 向上查找字符 n 向上查找 N 向下查找
文件 > 文件 覆盖写 指令的意思是将左边的文件写入到右边的文件中 若右边的文件不存在则创建 存在则覆盖
文件 >> 文件 追加写
ls -l > 文件 将当前目录下的文件列表写入到文件中
cat 文件1 > 文件2 将文件1的内容覆盖写到文件2 ( >> 追加写入)
echo "内容" > 文件 将内容覆盖写入文件中 ( >> 追加写入)
echo 输入内容 : echo $PATH 输入环境变量
echo hello 向控制台输入hello
head 文件 查看文件的前(默认)10行
head -n N 文件 查看文件的前N行
tail 文件 查看文件的后(默认)10行
tail -n M 文件 查看文件的后M行
tail -f 文件 实时追踪该文档的所有更新 工作中很常用
当我们使用pwd查看绝对路径时仍然是当前路径
rm - rm linkToRoot 删除软链接
history 显示所有的历史命令
history M 显示前M个历史指令
!N 执行第N个历史指令
date 显示当前的时间
date"+%Y-%m-%d %H:%M:%S" 格式化日期显示时间 (+号不可省略)
date -s "时间" 修改时间
cal 显示当前月份的日历
cal 年份 显示一年的日历
find 【目录】 查找类型 文件名
find /home -name hello.txt //查找home目录下文件名为hello.txt的文件\ * 匹配任何字符 ?匹配任意字符 -iname 不区分大小写 find /home -user admin //查找用户名为admin的文件 find / -size +20M //查找当前系统下大于20M的文件 -20M(小于20M的文件) 20M(等于20M的文件) (M大写 k可以小写 不可以大写) find /etc -cmin -5;在etc目录下查找5分钟内被修改过文件属性的文件和目录 -amin 访问时间 access -cmin 文件属性 change -mmin 文件内容 modify-a and 同时满足两个条件
-o or 两个条件满足其中一个即可
-type 【选项】 【选项】:-f 普通文件 -d 目录 -l 软连接
find /etc -size +20M -a -size -50M -type f //查找etc目录下文件大小在20M~50M之间的文件 find /etc -name *init* -exec 执行操作命令 {} \; //对搜索结果进行操作(严格区分空格) find /etc -name *init* -ok 执行操作命令 {} \; //带有询问找到test目录下java的文件且带有询问的删除
find . -inum inod号 -exec rm -rf {} \; //根据inode号来删除当前目录下的文件locate 文件 用于快速定位文件 基于数据库查找 不用遍历整个文件系统
刚创建的文件,需要使用命令updatedb更新数据库,才可以查找到该文件
在/tmp中创建的文件不可以被locate找到
grep 过滤查找
| 将前一个命令查找的结果输出传递给后一个命令查找
cat hello.txt| grep -n hello 查找hello.txt文件 并且在该文件中查找hello并显示所在的行号
-n 显示行号
-i 忽略大小写
-v 字符串 排除指定的字符串 ^N 以N开头的字符串
which 用来查看命令的文件路径以及是否有别名
whereis 用来查看命令所在的目录以及帮组文档的路径
gzip 文件 :压缩
gunzip 文件.gz 解压(不常用) 使用gzip命令压缩文件时不会保留源文件且不可以对目录压缩
zip 【选项】 文件 压缩目录 压缩 选项可以为 -r 递归压缩整个目录 文件是压缩后的文件名
unzip【选项】解压目录 文件 解压 选项可以为-d<目录> 指定解压后存放的目录 文件是解压前的文件名
tar 打包的文件以.tar.gz结尾
c :产生.tar打包文件
v 显示详细信息
f 指定打包的文件名
z 打包同时压缩
x 解压.tar文件
tar -zcvf 压缩后的文件名 目标文件名/目录 压缩文件
tar -zxvf 将要解压的文件 解压到的目录 解压文件
bzip2 zip的升级班 增加了可以保留源文件的选项
bzip2 -k 源文件 压缩文件并保留源文件
bunzip2 -k 压缩文件 解压文件且保留压缩包
tar -cjf 压缩后的文件名 源文件 生成.tar.bz2的压缩文件
tar -xjf 解压以.tar.bz2结尾的压缩文件
ls -ahl
chown 用户名 文件名 改变单个文件的所有者
chown -R 用户名 文件目录名 改变目录下的所有文件或目录(递归) 的所有者
chgrp 新组名 文件名 改变单个文件的所在组
chgrp -R 新组名 文件目录名 改变目录下所有文件索目录的所在组
usermod -g 新组名 用户名
umask -S
*
从左到右:
d 代表文件类型是目录 - 代表普通的文件 l 代表软连接 c 字符设备【键盘,鼠标】 b 块文件 硬盘
rwx 表时文件所有者的权限 r 代表写的权限 w 代表读的权限 x(execute) 代表可执行的权限
r-x 代表与文件拥有者同一组的用户所拥有的权限 可以写和执行但不能读
r-x 代表不与文件拥有者同组的其他用户所拥有的权限 (以上3个一组 - 代表不具有该权限 rwx 可以用数字表示 r 等于4 w 等于2 x等于1)
3或者1 如果是文件 数字代表硬连接数目 如果是目录则代表该目录下的子目录数(不包括文件 包括隐藏目录)
root 代表文件的所有者
root 代表文件所在的组名
19 如果是文件 表示文件的大小(字节) 如果是目录
时间代表最后一次修改的时间
rwx作用文件:
r代表read 可以读取,查看w代表write 可以修改,但是不代表可以删除该文件,删除一个文件的前提是要有对该文件有写的权限,才可以删除该文件x代表可执行,可以被执行rwx作用目录
r代表可读 ls可以查看目录内容write代表可写 代表可以修改 在目录内创建-删除-重命名目录x代表可以执行 可以进入该目录删除一个目录下文件的关键不是该文件是否具有w(写)权限,而是该文件所在的目录是否具有w权限即对文件的创建,删除权限
u 代表所有者 g 代表所有组 o代表其他人 a 代表所有人(u+g+o)
chmod u=rwx,g=rx,o=x 文件目录名 将该文件的权限修改为 rwxr-x–x
chmod o+w 文件目录名 增加其他人对该文件读的权限
chmod a-x 移出所有人对该文件的执行权限
chmod -R 遍历修改目录下所有文件或者目录的权限
chmod 751 文件目录名 7 = r+w+x 5 = w+x 1 = x
任务调度是指系统在某个时间执行特定的命令或者程序
crontab -e 编辑定时任务的
crontab -l 查询crontab的任务
crontab -r 删除当前用户下所有的crontab任务
*/1 * * * * ls-l >/tmp/to.txt: 每小时的每分钟执行ls-l >/tmp/to.txt命令
df- lh :查询系统整体磁盘使用的情况
du-h /目录 :查询指定目录的磁盘占用情况 默认为当前目录
-s 指定目录占用大小总汇-h带计量单位-a含文件 –max-depth=1 子目录深度 -c 列出明细的同时,增加汇总值ls -l /home |grep "^-"| wc -l :统计home目录下文件的个数
ls -l /home |grep "^d"| wc -l :统计home目录下目录的个数
ls -lR /home |grep "^-"| wc -l :统计home目录下所有的文件个数
ls -lR /home |grep "^d"| wc -l :统计home目录下所有的目录个数
last 查看目前和过去所有登陆过系统的用户的信息
lastlog -u 用户id号 查看具体用户登陆的详细信息
traceroute 主机 查看数据包到路径之间的路径
netstat 显示网络有关的信息
-t TCP协议-u UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议-l 监听-r 路由-n 显示IP和端口号netstat -tlun查看本机监听的端口
netstat -an查看本机所有的网路连接
netstat -rn 查看本机路由表
setup 配置网络
mount 挂载命令
ps命令是用来查看目录中,有哪些正在执行,以及他们执行的状况,可以不加任何参数
ps -a :显示当前终端所有进程信息
ps -u:以用户的格式显示进程
ps -x:显示后台进程运行的参数
user :用户名PID: 进程的id%CPU:进程占用CPU的百分比%MEN:进程占用物理内存的百分比VSZ:进程占用虚拟内存的大小(KB)RSS:进程占用的物理内存大小(KB)TTY:终端名称缩写STAT:进程状态。S表示休眠 s表示该进程是会话的先到程序 N表示进程拥有比普通进程优先级更低的优先级 R表示正在运行 D表示短期等待 Z 表示僵死进程 T表示被跟踪或被停止START:进程的启动时间TIME:进程使用CPU的总时间COMMAND:启动进程所用的命令和参数,如果过长会被截断显示ps -aux|grep 查看进程的名称
ps -ef:以全格式显示当前所有的进程,查看进程的父进程 -e:显示所有进程 -f :全格式
UID :用户IDPID:进程IDPPID:父进程IDC:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低,数值越小,表明进程是I/O密集型运算,执行优先级会提高kill 进程号
强制非法用户下线
killall 进程名称 : 通过名称终止多个进程
kill -9 进程号 : 强制终止某个进程
pstree 【选项】
【选项】 -p 显示进程的PID -u 显示进程的所属用户名
systemctl status firewalld 查看当前防火墙的状态(重启restart,终止stop,开始,start)
setup 或者 systemctl list-unit-files
top -u 用户名: 监视特定用户
top 回车 k 回车 进程号: 选择要终止的进程
top -d 时间间隔(s)
netstat -anp : 查看系统所有的网络服务 -an:按一定顺序排列输出 -p :显示哪个进程在调用
netstat -anp | grep 网络服务名称 :查看单个网络服务
安装未安装的rpm包时,使用rpm包全名且后跟rpm包的路径,而查询或者卸载时直接使用包名,系统会从数据库中寻找该rpm包的信息,所以可以在任意位置查询或卸载该rpm包
rpm -qa | grep 包名;查询rpm安装包 rpm -e --nodeps 包名;强行卸载rpm安装包 erase rpm -ivh rmp 包全名;安装rpm文件-i代表安装(install)
-v 代表显示详细信息 verbose
-h 显示详细信息 hash
--nodeps 不检测依赖性
rpm -ql 查询rpm包的安装位置 l list q query p package查询未安装包将要安装的信息(加全包名)
rpm -qf 系统文件 查询系统文件属于那个rpm包
rpm -qR 包名 查询已安装包的依赖
rpm -qRp 包全名 查询未安装包的依赖 R requires
yum只是在线管理rpm包的命令,并不存在yum包,可以解决包和包之间的依赖
yum list | grep 包名 查看系统是否存在该rpm包
yum install 包名 安装rpm文件
yum remove 包名 卸载rpm包
yum update 包名 升级rpm包 不加包名会升级所有的rpm包括linux内核,导致系统崩溃
-y 选项 自动回答yes