Linux入门

概述

Linux本质是一个OS,图标是一只企鹅,叫Tux。

Linux发行版本:

  • Red Hat:收费版 RHEL(Red Hat Enterprise Linux),免费版 fedora(实验版) 和 CentOS

  • debian➡ubantu➡Linux Mint,都免费。

  • SUSE:收费版 SEL(SUSE Enterprise Linux),免费版 open SUSE。

  • 其他:gentoo linux,archlinux➡manjaro。

Linux系统中一切皆文件

/bin:Binary,存放常用命令

/sbin:Super User Binary,系统管理员的命令

/home:普通用户的目录,每个用户在此目录下有一个以账号命名的文件夹

/root:系统管理员的目录

/lib:系统的基础共享库,几乎所有的程序都用到

/lost+found:一般为空,系统非法关机后会存放一些文件

/etc:配置文件

/usr:用户的很多程序和文件放在此处,类似windows的program files

/boot:存放启动Linux的核心文件,自己安装的别放这

/proc:一个虚拟的目录,是系统内存的映射

/srv:service,存放一些服务启动之后的需要提取的数据

/sys:存放了2.6内核中新出现的一个文件系统sysfs

/tmp:存放临时文件

/dev:类似Windows的设备管理器,将所有硬件用文件形式存储

/media:Linux会将自动识别的设备(U盘、光驱)挂载到此目录下

/mnt:用来让用户挂载别的文件系统

/opt:安装额外软件的目录,比如MySQL

/var:存放不断扩充或经常被修改的东西,比如日志文件

/selinux:SELinux是一种安全子系统,能控制程序只能访问特定文件

Vim

Vim是类Unix系统最常用的文本编辑器

安装命令:

yum -y install vim

使用Vim打开文件:

vim a.txt

三种模式

  • 一般模式
    • 打开文件后默认的模式
    • 可以删除、复制、粘贴
    • 但是无法编辑文件内容
  • 编辑模式
    • 一般模式下按[i、I、o、O、a、A]进入的模式
    • 可以进行文件的编辑
    • Esc退回一般模式
  • 命令模式
    • 一般模式下按[?、/、:]进入的模式
    • 可以输入一些指令进行操作
    • 比如查找、替换、保存、退出、显示行号等操作
    • Esc退回一般模式

常用命令

一般模式:

指令 功能
yy 复制当前行
y 数字 y 从当前行开始复制n行
dd 删除当前行
d 数字 d 从当前行开始删除n行
p 在光标所在行的下一行粘贴
u 撤销
^ 光标移到行头
$ 光标移到行尾
gg 光标移到页头
G 光标移到页尾
数字 + G 光标移到目标行
yw 复制一个单词
dw 删除一个单词
X 删除一个字母,向前删,类似Backspace
x 删除一个字母,向后删,类似Del

编辑模式:

指令 功能
i 光标前插入
I 光标所在行的行头插入
a 光标后插入
A 光标所在行的行尾插入
o 下一行插入
O 上一行插入

命令模式:

指令 功能
:w 保存
:q 退出
:! 强制执行
:%s/旧字符串/新字符串 查询替换
/字符串 查找字符串
?字符串 查找字符串
:set nu 显示行号
:set nonu 不显示行号
ZZ
:nohl 去除高亮显示

服务管理命令

临时服务管理

命令 功能
systemctl --type service 查看所有运行中的服务
systemctl start 服务名 开启服务
systemctl stop 服务名 停止服务
systemctl restart 服务名 重启服务
systemctl status 服务名 查看服务状态

服务自启管理

命令 功能
systemctl list-unit-files 查看所有服务自启配置
systemctl enable 服务名 开启服务自启
systemctl disable 服务名 关闭服务自启
systemctl is-enabled 服务名 查看某个服务自启状态

建议关闭防火墙自启动

systemctl disable firewalld	

关机&重启

命令 功能
sync 将数据从内存同步到硬盘
poweroff 关闭系统,等价 shutdown -h now
reboot 重启系统,等价 shutdown -r now

shudown [选项] [参数]

  • 选项

    • -h 关机,即 halt
    • -r 重启,即 reboot
  • 参数

    • now,立刻
    • 数字,多久后执行,单位分钟
  • 还可以显示提示信息,比如

    shutdown -h 3 '系统会在3分钟后关机'
    

常用快捷键

按键 功能
Ctrl + c 停止进程
Ctrl + l 清屏,等价命令 clear
彻底清屏是 reset
Tab 提示,防止输错
上下键 复用执行过的命令
Ctrl + Alt Linux 和 Windows 之间切换

文件目录类

man 获得帮助信息

man 命令名

  • man 即 manual,手册

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

help 命令名

pwd 显示当前目录的绝对路径

[root@hadoop101 ~]# pwd
/root

ls 列出目录的内容

ls [选项] [目录]

  • 选项
    • -l 列出详细信息,简写为 ll
    • -a 同时列出隐藏文件
  • 目录
    • 相对路径或绝对路径
    • 若不指定,默认当前目录
文件类型和权限 链接数 文件属主 文件属组 文件大小(byte) 创建或最近修改时间 文件名
drwxr-xr-x. 2 root root 4096 5月 17 17:47 test

注意:链接包括硬链接和软链接,文件自身就是一个硬链接,所以链接数都至少为1

cd 切换路径

cd [参数]

参数
cd 相对路径/绝对路径 切换目录
cd ~ 或 cd 回到当前用户的家目录
cd .. 切换到上一级目录
cd - 切换到上一次所在目录
cd -P 跳转绝对物理路径,而非快捷方式路径

mkdir 创建目录

mkdir [选项] [目录]

  • 选项
    • -p 创建多层目录

touch 创建空文件

touch [文件名]

  • 可以直接写文件名,会在当前目录下创建
  • 也可写任意已存在目录的路径,在其下创建

cp 复制文件

cp [选项] [源文件或目录] [目标文件或目录]

  • 选项
    • -r 递归复制整个文件夹
  • 若源文件与目标重名,可选择是否覆盖,也可以用 \cp 命令强制覆盖不提示

rm 删除目录或文件

rm [选项]

  • 选项
    • -r 递归删除目录所有内容
    • -f 强制执行不提示
    • -v 显示指令的详细执行过程

mv 重命名或移动文件

mv oldFile newFile 重命名文件

mv source dest 移动文件

cat 查看小文件

cat [选项] [文件]

  • 一般用来查看一屏可以显示全的文件
  • 选项
    • -n 查看内容时显示行号

less 查看大文件

  • 不是一次性加载,而是根据现实需要来加载内容,适于大文件
  • pageup、pagedown翻页
  • ?或/查询文件中是否包含某内容
  • q离开less程序

echo 向控制台输出内容

echo[选项] [内容]

  • 选项
    • -e 支持转义字符,比如\t、\n

head 输出文件头部内容

head [选项] [文件]

  • 默认显示文件前十行的内容
  • 选项
    • -n 指定显示前多少行内容

tail 输出文件尾部内容

  • 默认显示文件尾部十行的内容
  • 选项
    • -n 指定显示尾部多少行内容
    • -f 实时追踪该文档的所有更新,经常用来查看日志

> 覆盖 和 >> 追加

ll > a.txt 将ll命令查到的内容覆盖到a.txt中

cat t.txt >> a.txt 将t.txt中的内容追加到a.txt的末尾

ln 软链接

ln -s [源文件或目录] [软链接名]

  • 软链接命名时,可指定创建目录

tar 压缩解压

压缩:tar -zcvf 压缩包名.tar.gz 需要压缩的内容

  • 设定压缩包名时,可指定压缩包的位置

解压:tar -zxvf 压缩包 -C 目录

  • -C用来指定解压的位置
  • 若不加-C,解压到当前目录

选项说明:

  • -z 打包同时压缩
  • -c 产生.tar打包文件
  • -x 解包.tar文件
  • -v 显示详细信息
  • -f 指定压缩后的文件名

用户管理类

useradd 添加用户

useradd 用户名

  • 添加新用户

useradd -g 用户组 用户名

  • 添加新用户到某个组

groupadd 添加组

groupadd 用户组名

passwd 修改用户密码

passwd 用户名

  • 设置或更改用户密码

id 查看用户信息

id 用户名

  • 查看用户信息

打开/etc/下的passwd文件能查看创建了哪些用户

打开/etc/下的group文件能查看创建了哪些组

su 切换用户

su 用户名

  • 切换到某个用户
  • 只能获得执行权限,不能获得环境变量
  • 每次切换用户都会嵌套启动一个新的线程,需要用exit一层层退出来

su - 用户名

  • 同时获得执行权限和环境变量

sudo 使用root权限

sudo 让普通用户使用root权限执行一些命令

  • 在/etc/下的sudoers文件91行的root下面添加内容

    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    zhangsan        ALL=(ALL)       ALL
    
  • 或者配置成采用sudo命令时,不需要输入密码

    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    zhangsan        ALL=(ALL)       NOPASSWD:ALL
    

userdel 删除用户

userdel 用户名

  • 删除某个用户但保留用户主目录

userdel -r 用户名

  • 删除某个用户同时删除用户主目录

groupdel 删除组

groupdel 用户组名

usermod 修改用户属组

usermod -g 用户组名 用户名

  • 修改用户所在组,给定的组必须存在

groupmod 修改用户组名

groupmod -n 新组名 旧组名

who 查看当前用户

whoami 显示当前的用户名称

who am i 显示登录时的用户名称

文件权限类

文件属性

ll命令可以查看文件权限,如果没有该权限,对应位置显示 -

文件类型 属主权限U 属组权限G 其他用户权限O
d / l / - r-w-x r-w-x r-w-x
目录 / 软链接 / 文件 读-写-执行 读-写-执行 读-写-执行

rwx作用到文件

  • r:可读,可以读取、查看
  • w:可写,可以编辑修改,但不可删除,删除文件需要对文件所在目录有写权限
  • x:可被系统执行

rwx作用到目录

  • r:可读,可以ll查看目录内容
  • w:可写,目录内创建、删除、重命名文件
  • x:可以进入该目录

chmod 修改文件权限

方式一:chmod [{u g o a} {+ - =} {r w x}] [文件或目录]

  • u g o a 对应 属主 属组 其他用户 全部
  • + - = 对应 增加 删除 设置
  • r w x 对应 读 写 执行

方式二:chmod [421] [文件或目录]

  • r w x 分别赋值 4 2 1

chown 改变所有者

chown [选项] [最终用户] [文件或目录]

  • 修改文件或目录(不包括子文件或子目录)的所有者

  • 选项

    • -R 修改目录的同时作用到其下所有子文件

chgrp 改变所在组

chgrp [最终用户组] [文件或目录]

搜索查找类

find 条件查找

从指定目录下递归的遍历所有文件即子目录

find [搜索范围] [选项]

  • 选项
    • -name 根据指定文件名查找
    • -user 根据指定用户名查找
    • -size 根据指定文件大小查找

grep 过滤查找

通常结合管道符 | 一起使用

选项 -n 显示匹配行和行号

which 查看命令位置

which ll 查看ll命令在哪个文件夹内

进程线程类

ps 查看系统进程

ps -aux | grep xxx 查看系统所有进程,可以查看CPU和RAM占用率

ps -ef | grep xxx 可以查看父子进程之间的关系

kill 终止进程

kill [进程号]

  • 通过进程号杀死进程
  • 选项 -9 强迫进程立即停止

killall [进程名称]

  • 通过进程名杀死进程,支持通配符
  • 用于系统负载过大变得缓慢时

netstat 查看进程网络信息

netstat -anp | grep 进程号

  • 查看进程的网络信息

netstat -nlp | grep 进程号

  • 查看网络端口号的占用情况

选项

  • -n 不显示别名,能显示数字的全部转化数字
  • -l 仅列出处于监听下的服务状态
  • -p 显示正在被哪个进程调用

时间日期类

date 显示当前时间

date [选项] [日期格式] 解释:显示当前时间 日期

date 		 #显示当前时间
date +%Y	 #显示当前年份
date +%m	 #显示当前月份
date +%d	 #显示当前是本月的哪一天

#组合,根据设定格式显示年月日时分秒,加号别忘了,注意大小写,不能有空格,除非加引号
date +%Y-%m-%d-%H:%M:%S 
date +%Y-%m-%d %H:%M:%S #达咩,更正如下
date +%Y-%m-%d" %H:%M:%S" 
#date显示非当前时间
date -d '2 days ago' #前天时间,单引号
date -d '-1 days gao' #明天时间
#date设置系统时间
date -s "2017-5-2 19:32:13"
#显示时间戳
date +%s

cal 显示日历

cal [选项] 解释:查看日历,不加选项显示本月日历

cal 		#显示本月日历
cal 2017	#显示2017年的日历
cal -y 		#显示本年日历

crontab系统定时任务

crontab [选项]

#首先查看守护进程crond服务是否开启
systemctl status crond

选项

  • -e 编辑crontab定时任务
    • 此命令会进入vim编辑界面,设置定时任务
  • -l 查询所有的crontab任务
  • -r 清空当前用户的所有crontab任务

vim编辑界面中,任务格式为 * * * * * 执行的任务

* 含义 范围
第一个 “ * ” 一个小时中的第几分钟 0—59
第二个 “ * ” 一天当中的第几小时 0—23
第三个 “ * ” 一个月当中的第几天 1—31
第四个 “ * ” 一年当中的第几个月 1—12
第五个 “ * ” 一周当中的星期几 0—7(0 7都代表周日)

此外,还有一些特殊符号

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

软件管理类

RPM 包管理

RPM(RedHat Package Manager),RedHat软件包管理工具,类似win里的setup.exe,是Linux里的打包安装工具。

名称格式

Apache-1.3.23-11.i386.rpm

"Apache"

  • 软件名称

"1.3.23-11"

  • 软件版本号,主版本和此版本

"i386"

  • 软件运行的硬件平台,Intel 32位处理器的统称

"rpm"

  • 文件扩展名,代表RPM包

查询命令

rpm -qa 解释:查询安装的所有rpm软件包

rpm -qi 【软件】 解释:查询某个软件的详细信息

卸载命令

rpm -e 【软件包】 解释:卸载软件包,不用写全名,软件名就可以了

rpm -e --nodeps 【软件包】 解释:不检查依赖,强行卸载,会导致使用该包的软件无法工作

安装命令

rpm -ivh 【RPM包全名】

选项 作用
-i install,安装
-v --verbose,显示详细信息
-h --hash,显示进度条
--nodeps 安装前不检查依赖

YUM 仓库管理

YUM是一个Shell前端软件包管理器,基于RPM包管理,能从指定服务器自动下载RPM包并安装,可以自动处理依赖性关系,并且一次性安装所有依赖包,无需繁琐的一次次下载安装。

基础命令

yum 【选项】【参数】

选项

  • -y 对所有提问都回答"yes"
参数 作用
install 安装rpm软件包
update 更新rpm软件包
remove 卸载
check-update 检查是否有可用更新包
list 显示软件包信息
clean 清理yum过期的缓存
deplist 显示yum软件包的所有依赖关系

热门相关:帝少的专属:小甜心,太缠人   极度诱惑之街头湿女   夫人你马甲又掉了   惊世毒妃:轻狂大小姐   夫人你马甲又掉了