Linux 指令
1、市面上的操作系统:windos 系统(闭源系统),Mac 系统(闭源系统),Linux系统(开源系统),Unix系统
unix 是linux操作系统的前身,unix时间戳是指1970年1月1日 0时0分0秒,1970年是unix元年,也是unix诞生的年份
2、为什么要使用linux操作系统
特点:
稳定性:取决于系统的底层架构,一般情况下Liunx系统能做到长时间不关机,系统一点也不卡。
安全性:开源系统,所有人都可以贡献自己的源代码为Linux系统打补丁。
3、问:开源一定意味着免费么?
答:不一定,有些可能会进行服务收费,例如Redhat(小红帽系统),RedHat 是用 LINUX 核心构架的一个操作系统。RedHat Linux 是目前世界上使用最多的 Linux 操作系统。
4、问:闭源一定收费么?
答:QQ和微信都是免费(只要你开增值服务)。
5、GNU计划:又称革奴计划,(倡导代码开源)
6、GCC :是代码编辑器
7、Linunx 分支:常见的有centos 、redhat、乌班图、debian等等。
8、 /:表示的是根目录
9、bin: 是binary 的缩写里面存放的是二进制文件
10、 /etc: Linux下所有的配置文件都会存放到etc目录。()
11、/home:是所有非root用户家目录的一个集合
12、/root: root用户的家目录。
13、/sbin: sbin表示super bin,里面同样也类似于bin目录,也存放了一些二进制文件,只不过这些命令只能是让超级管理员去运行的。()
14、/usr: 存放着一些用户自己安装的软件,其实类似于windows下的Program Files目录。()
15、/var: (variable)存放着Linux下的一些日志文件,在实际开发的时候一些公司也习惯把Apache 或者 nginx 的站点目录也会放到这个目录中。()
16、基本命令(*)
通用语法格式:#指令名称[选项][操作的目标]
ls命令:
ls 显示当前目录下的文件和文件夹
ls -l 以列表的形式显示当前目录下文件和文件夹,还显示文件权限和创建日期等。
ls -la 以列表的形式显示当前目录下文件和文件夹(包含了隐藏文件(隐藏文件特点是以“.”开头的名字)),还显示文件权限和创建日期等。
clear命令:
清空当前屏幕中全部的命令(其实质是没有清空,只不过是订到上面去了)
su指令
作用:切换用户(switch user)
语法:#su 需要切换到的用户名(用户名可以不写,则表示切换到root用户)
例如:
1、从root用户切换到amdin用户
su admin
2、从admin用户切换到root用户
su root
结论:从用户高权限切低权限用户不需要密码,反之需要密码
cd指令
作用:切换文件目录(change directory)
关于路径:路径分为绝对路径和相对路径
相对路径是相对当前路径地一种表现形式。
特点:只要不是以“/”开头的就是相对路径。
绝对路径是直接从“根”开始的一种路径形式。
特点:以“/”开头的路径称之为绝对路径。
pwd指令
作用:打印当前的工作路径(print working directory)。
例如:在当前用户的家目录中使用pwd命令。
创建文件
命令: touch
语法:touch 文件的名字
创建文件夹
命令:mkdir [make directory]
语法:mkdir 文件夹路径
复制
命令:cp (copy)
语法:cp 需要复制的文件 需要保存的位置
选项说明:
-r: 表示递归。(如果复制的是文件夹,则-r 就不是选项,是必须要加的。)
问题:文档在复制过程中,其名称一般是否变化?
答:不变,数量变化。
移动操作
命令:mv (move)[实际的操作 = 剪切+粘贴]
语法:mv 需要操作的文档 新文档的位置
问题:移动操作会影响什么?
答:路径变化,文件总数量不变,名称不变。
问题:重命名操作会影响什么?
答:名称变,路径不变,文件总数量不变。
删除操作
命令:rm (remove)
语法:rm 【-rf】 需要删除的文档
选项说明:
-r :表示递归
-f (force):表示强制删除,不再提示是否确认要删除。
面试题:
请问使用 root 用户 “rm -rf /”这个命令能不能执行?
答:从语法上讲,该指令可以执行,表示递归删除根下面的所有文件,但是这个操作很危险,不建议执行。
文档查看指令
tail指令
作用:查看一个文件的末n行
语法:#tail -n 文件的路径
说明:-n 可以不写,不写,默认表示10行
head指令
作用:查看一个文件的头n行
语法:#head -n 文件的路径
说明:-n 可以不写,不写,默认表示10行
cat指令
作用:查看某个文件的全部内容(内容是正序的)
语法:#cat 文件的路径1 文件的路径2 文件的路径3 …
vim指令
作用:打开一个文件,显示文件内容
语法:#vim 文件路径
例如:打开 root/log.txt
指令 #vim root/log.txt
退出输入 “q:” 按下回车键即可。
关机重启指令
reboot 指令
作用:重启计算机
语法:#reboot
shutdown 指令
作用:关机
语法:#shutdown -h 时间
now:(shutdown -h now)标识立即关机
+m:(m表示minutes数字)例如 +5,表示5分钟之后关机
halt 指令
作用:关机(关闭内存)
语法:#halt
进阶指令
1、du 指令
作用:du 表示directory used (显示出目录所占的磁盘空间大小的情况)
语法:#du -sh 目录路径
选项说明:
-s :表示 sumary ,汇总统计
-h :表示以较高的可读性的单位进行查看
2、df 指令
作用:df 表示disk free (查看磁盘的剩余空间的情况)
语法:#df -h
选项说明:
-h :表示以较高的可读性的单位进行查看
3、free 指令
作用: 查看内存的使用情况
语法:# free -m
选项说明:
-m :表示以mb为单位进行查看
4、find 指令
作用: 表示根据条件去查询文档的所在位置。
语法:# find 范围路径 选项 选项的值
常见选项说明:
-name :根据名字进行查询
-type :根据文档的类型进行查询 [d 表示文件、f:表示普通文件、s:表示套接字文件、l:表示连接文件,c:表示字符设备文件,b:标识块状设备文件]
-use :根据所有者进行查询
-group :根据所属的用户组进行查询
-size :根据大小进行查询
5、ps 指令
作用: 表示process show ,查看进程
语法:# ps -ef
选项说明:
-e :等价于-A,all,表示全部
-f : 表示full,显示全部的列
6、service 指令
作用: 操作服务的(启动/停止/重启)
语法:# service 服务名 start/stop/restart
或者使用命令 /etc/init.d/服务名 restart 重启服务
7、grep 指令 (重点)
作用: 搜索、过滤,主要用于对文件/内容进行筛选,选出需要的内容
语法:# grep 【选项】关键词 文件路径/内容
常见选项说明:
-v:排除
-E:表示 extension,该语法表示多条件筛选,“|” 表示OR(或)
指令 #grep -E “关键词1|关键词2|关键词3|…” 文件路径或者内容
8、wc 指令
作用:word count,起作用是用于统计文件的各项数值(行,单词数,字节数)
语法:# wc -lwc 文档的路径
常见选项说明:
-l:line缩写,行数
-w:word,单词数
-c:byte,字节数
注意:lwc 选项的顺序,不影响其指令输出的结果的顺序,输出的结果顺序一定是行数、单词数和字节数。
9、管道(重点)
作用:管道严格意义上说其不是指令,其中是一个符号“|”。该符号主要起到辅助的作用,能够将多个指令合在一行上进行操作。主要用在搜索过滤等上面。
语法:#必须在终端中有输出内容的指令 | 有输入的指令 【要求有读取文件内容的需求】
管道的核心理解概念:管道前面的指令的输出其实就是管道后面指令的输入。
案例:
ps -ef | grep php
编辑器命令
1、vim 的打开文件的方式:
指令 #vim 文件路径 作用:打开指定的文件
指令 #vim +数字 文件路径 作用:打开指定的文件,将光标移动到指定行
指令 #vim +/关键词 文件路径 作用:打开指定的文件,并且高亮显示关键词(搜索)
2、光标移动
(1)、光标移动到行首
按键 shift + 6 或者 ^
(2)、光标移动到行末
按键 shift + 4 或者 $
(3)、光标移动到首行行首
按键 gg
(4)、光标移动到末行行首
按键 G [shift + G键]
(5)、翻屏
向上翻屏:按键 ctrl+b (before) 或者pgup
向下翻屏:按键 ctrl+a (after) 或者pgdn
(6)、快速定位到指定的行
数字 G
3、复制操作
(1)、复制光标所在行
按键:yy
粘贴:在想要地粘贴的地方按下p键 【将复制的内容粘贴到贯标所在行地下一行】,如果想将复制的内容粘贴到光标所在行之前,使用大P键
(2)、以光标所在行为准(包含当前行),向下复制指定的行数
按键:数字 + yy
4、剪切/删除
(1)、剪切/删除光标所在行
按键:dd (删除之后下一行上移)
(2)、剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行
按键:数字 dd (删除之后下一行上移)
(3)、剪切/删除光标所在的当前行之后的内容(包含当前行),但是删除之后下一行不上移
按键:D (删除之后当前行会变成空白)
5、撤销/恢复
撤销输入:u
恢复:ctrl + r
1、用户管理
(1)、添加用户
语法:#useradd 选项 用户名
常用选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名。
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名。
-u: uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似QQ自选靓号】。
-c:comment,添加注释(选择是否添加)
-s:指定用户登录后所使用的shell 解释器
-d:指定用户登录时的起始目录
-n:取消建立以用户名称为名的群组
案例:创建用户zhangsan 不带任何选项
指令 # useradd zhangsan
验证是否成功:
a、验证 /etc/passwd的最后一行,查看是否有zhangsan的信息
指令 # tail -1 /etc/passwd
b、验证是否存在家目录(在centos下创建好用户之后随之产生一个同名家目录);
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
解释上面命令的含义
用户名:密码:用户id:用户组id:注释:家目录:解释器shell
用户名:创建新用户名称,后期登录的时候需要输入
密码:此密码位置一般情况都是 “X”,表示密码的占位
用户ID:用户的识别符;[-u]
用户组id:该用户所属的主组ID;[-g]
注释:解释该用户是做什么用的;[-c]
家目录:用户登录进入系统之后默认的位置;【-d】
解释器 shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,传递给内核处理;【如果解释器是/bin/bash 表示用户可以登录到系统,/sbin/nologin 表示该用户不能登录到系统】
注意:在不添加选项的时候,执行useradd之后会执行一系列的操作
a.创建同名的家目录;
b.创建同名的用户组;
案例:添加选项,创建用户lisi,让李四属于501主组,附加组500,自选靓号 666,并且不能登录到系统,可以写注释为“user lisi”
指令 # useradd -g 501 -G 500 -u 666 -s /sbin/nologin -c “user lisi” lisi
验证是否创建成功:
指令 # id lisi
(2)、修改用户
语法:#usermod 选项 用户名 (usermod 是user modify的缩写,含义是修改用户)
常用选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名。
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名。
-u: uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似QQ自选靓号】。
-c:comment,添加注释(选择是否添加)
-s:指定用户登录后所使用的shell 解释器
-d:指定用户登录时的起始目录
-l:修改用户名
案例:修改zhangsan 用户主组为500 ,附加组改为 501
# usermod -g 500 -G 501 zhangsan
案例:修改zhangsan 用户名,用户名改为 wangerma
# usermod -l wangerma zhangsan
(3)、设置密码
Linux 不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。
语法:#passwd 【用户名】
案例:#passwd wangerma
(4)、删除用户
语法:#userdel 选项 用户名 (userdel 是user delete的缩写,含义是删除用户)
常用选项:
-r:表示删除用户的同时,删除其家目录;
案例:删除wangerma 用户
指令 # userdel -r wangerma
注意:已经登录的wangerma 用户删除的时候提示删除失败,但是没有登录的lisi用户可以正常删除。
2、用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,比如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group 文件的更新。
/etc/group 文件中的内容如下:
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:cheeki
cdrom:x:11:
mail:x:12:exim,postfix
文件结构:
用户组名:密码:用户组ID:组内用户名
密码:X表示占位符,虽然用户组可以设置密码,但是绝大部分的情况下不设置密码;
组内用户名:表示附加组是该组的用户名称;
(1)、用户组添加
语法:#groupadd 选项 用户组名
常用选项:
-g:类似用户添加选项中的“-u”,-g表示选择自己设定一个自定义的用户组ID数字,如果自己不指定,则默认从500之后递增;
案例:使用groupadd 指令创建一个新的用户组,命名为admins
指令 groupadd admins
(2)、用户组编辑
语法:#groupmod 选项 用户组名
常用选项:
-g:类似用户修改选项中的“-u”,-g表示选择自己设定一个自定义的用户组ID数字;
-n:类似于用户修改 “-l”,表示设置新的用户组的名称
案例:修改admins 用户组,将组ID改成520,将名称改为admin123
指令 groupmod -g 520 -n admin123 adnins
(3)、用户组删除
语法:#groupdel 用户组名
指令 groupdel admin123
【注意:当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除(附加组是可以的);如果确实需要删除,则先从组内移除所有用户。】
【提示:针对用户和用户组的管理指令,除了passwd指令之外,其他指令一般情况下只有root用户可以执行。】
三、权限
语法:#chmod【选项】 权限模式 文档路径
注意事项:
常用选项:
-R:递归设置权限(当文档类型为文件夹的时候使用)
权限模式:就是该文档需要设置的权限信息
文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。
【注意点:如果想要给文档设置权限,操作者要么是root用户,要么就是文档的所有者。】
给谁设置:
u:表示所有者身份 owner (user)。
g:表示所有者同组用户设置 group。
o:表示other,给其他用户设置权限。
a:表示all,给所有人(包含 ugo部分)设置权限
【注意:如果设置权限的时候不指定用户给谁设置,则默认给所有用户设置】
1、权限字符:
r:读
w:写
x:执行
-:表示没有权限
设置多个身份的权限时候,每个身份之间需要通过英文逗号分开。
例如:需要给 /root/test.cfg 文件 (-rw———-)设置权限,要求所有者拥有全部的权限,同组用户拥有读和写权限,其他用户只读权限。
指令 chmod u+x,g+rw,o+r /root/test.cfg
或者
指令 chmod u=x,g=rw,o=r /root/test.cfg
2、数字形式
经常会在网上见到类似于 # chmod 777 a.txt 这样的一个权限,这种形式称之为数字形式权限(777)
读:r 4
写:d 2
执行:x 1
没有任何权限(-):0
例如:需要给test.cfg 设置权限,权限要求所有者拥有全部权限,同组用户拥有读执行权限,其他用户只读。
指令 chmod 754 test.cfg
面试题:用超级管理员设置文档的权限命令shi #chmod -R 731 aaa,请问这个命令有没有什么不合理的地方?
所有者 = 7 = 4 + 2 + 1 = 读 + 写 + 执行
【*】同组用户 = 3 = 2 + 1 = 写 + 执行
其他用户 = 1 = 执行
问题在权限 731 中 3 表示写+执行权限,但是写又必须要打开之后才可以写,因此必须需要具备读权限,因此权限不合理。设置权限时只要出现权限数字2,3一般都是有问题的权限。
【在linux中如果删除以文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除】
3、属主和属组 (用户主组和所属组)
指令:chown
作用:更改文档的所属用户 (change owner)
语法:#chown [-R] 新的username 文档路径
【
扩展:通过一个命令既可以更改文件所属的用户,也可以修改所属用户组
命令如下:
语法:#chown [-R] username:groupname 文档路径
】
指令:chgrp
作用:更改文档的所属用户组 (change group)
语法:#chgrp [-R] groupname 文档路径
指令: which (where is)
作用:查询指令的完整路径
语法:#which useradd
三、网络设置
1、ip地址查看
需要的场景:远程连接、配置相关软件时
指令:#ifconfig
得知的信息有:
(1)、有2块网卡,一个加eth0,另一个lo(本地回环网卡,本机ip)
(2)、ip地址是inet addr后面的东西(内网IP)
2、网卡配置文件
位置:/etc/sysconfig/network-scripts/ifcfg-*文件
ONBOOT:表示是否自动连接
BOOTPROTO (COL):网卡启动之后使用的协议,一般情况下是DHCP
HWADDR:硬件地址(mac地址,物理地址),计算机之间的通信都是依赖于mac地址
扩展:针对像网卡配置目录层次比较深的文件,如果需要频繁更改,可以将需要的文件设置一个快捷方式,
将其放在经常操作的目录,以简化后续的打开文件操作。
语法:#ln -s 原始路径 快捷方式路径
案例:将ifcfg-thh0 文件在root家目录下创建快捷方式
指令 ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 /root/wangka.conf
3、网络服务操作
可以通过service 指令来对网络的服务进行重启/停止/启动等操作
语法:#service network start/stop/restart (操作所有的网卡设备)
四、ssh
1、简介:
ssh (secure shell,安全外壳协议),该协议有2个常用的作用:远程连接、远程文件传输。
协议使用端口号:默认是22
远程登录可以借助第三方工具(Xshell,finshShell)
五、
在linux 系统中,软件的管理方式有三种:rpm、yum、编译方式。
1、rpm
优点:对于软件包的操作比较简单,通过简单指令即可操作
缺点:
1、安装时需要自行下载软件包
2、安装、卸载软件时需要考虑到依赖关系
3、软件的自定义性比较差,不适合有特殊需要的场景
语法:
查询指令:#rpm -qa 关键词
选项说明:
-q:query 查询
-a:all 所有
卸载指令:#rpm -e 软件包全称 [—nodeps]
选项说明:
-e:卸载
—nodeps:忽略依赖关系
安装指令:#rpm -ivh 软件包路径
选项说明:
-i:install
-v:显示安装过程
-h:以”#”形式显示安装过程
更新指令:#rpm -Uvh 软件包路径
选项说明:
-U:upgrade
-v:显示安装过程
-h:以”#”形式显示安装过程
案例:查询、卸载、安装 firefox浏览器
查询:rpm -qa firefox
卸装:rpm -e firefox
安装:rpm -ivh firefox
2、yum 安装
优点:
1、快速、傻瓜式的软件管理方式
2、在联网情况下,自动从服务器上下载软件包(内、外网服务器均可)
3、自动解决软件依赖关系
缺点:
因其底层实为rpm操作,所以也丧失了对软件的自定义功能。
Yum常用语法:
搜索、查询相关
指令 #yum search [all] 关键词 (依据关键词,查询服务器上的所有包资源)
指令 #yum list [关键词] (列出所有的包,包含已经安装的和可供安装的包)
指令 #yum list installed [关键词] (列出已经安装的包)
安装
注意:操作指令(install)与-y选项可哟颠倒,下同。
指令 #yum [-y] install 关键词 (安装软件包)
卸装
指令 #yum [-y] remove 关键词 (卸载软件包)
更新
指令 #yum [-y] update (更新整个系统,包含内核)
指令 #yum [-y] update [关键词] (更新指定的包)
3、编译安装(难点)
优点:
1、用户可以选择需要的软件功能
2、源码方式,有开发能力的用户,可对源码进行自定义
缺点:
1、需要自行解决依赖关系
2、编译时间较长
3、容易出错,一旦出错,需要重新编译安装
编译安装步骤:
1、下载源码包
2、解压源码包
3、进入解压目录
4、配置安装
5、编译
6、安装
案例:编译安装Nginx
类似于apache 是一款开源的web服务器软件,其默认端口号也是80
1、下载nginx包
nginx官网下载地址:https://nginx.org/en/download.html
2、需要将下载地址在终端输入,进行下载
1、下载指令:#wget https://nginx.org/download/nginx-1.23.4.tar.gz
【感谢龙石为本站提供api网关 http://www.longshidata.com/pages/apigateway.html】
2、解压压缩包:
#tar -jxvf 路径 (针对.tar.bz2 格式)
#tar -zxvf 路径 (针对.tar.gz 格式)
选项:
x:表示解压
v:表示显示解压过程
f:表示指向的文件
j和z:都表示解压文件指令格式
指令:tar -zxvf nginx-1.23.4.tar.gz
3、进入解压后的目录
指令#:cd nginx-1.23.4
4、配置安装
配置包含:指定安装的位置、需要的模块功能
指定安装位置使用:--prefix 选项
例如: --prefix=/usr/local/nginx (表示nginx 安装位置)
指令 # ./configure --prefix=/usr/local/nginx
5、编译
指令 # make
6、安装
指令 #make install