linux学习笔记

 

目录

linux常规操作

linux目录结构

linux安装

网络适配器设置

划分磁盘空间

vim基本介绍

三种常见模式

三种模式转换

文件操作以及目录操作

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

ls 显示当前目录或者文件的信息

cd 切换目录

mkdir用于创建目录

rmdir删除空目录

touch用于创建文件

stat查看文件详细信息

cp用于复制文件

rm 删除文件

mv 移动文件,移动目录要加上-r

cat 可以将文件内容打印到屏幕上,只可浏览不可更改

more 以全屏幕方式按页显示文本文件的内容

less 作用与more相同

>输出重定向

echo指令输出内容到控制台

head显示文件的开头10行内容

tail指令显示文件的后10行、

ln 软链接,软连接一定要写绝对路径

history查看已经执行过的历史命令,也可以执行历史命令、

时间日期类

cal 显示当前月日历

date显示当前日期

系统设置以及开机关机

setup打开系统设置以及防火墙设置

reboot重新启动

shutdown

sycn 把内存里的东西存储到硬盘中,存档

init【012356】切换运行级别

修改root密码操作步骤

用户和组

su 切换用户

exit 返回原来用户

logout注销用户,在图形界面无效

useradd 创建用户,最好不要添加选项,最常用的是添加附加组-G

usermod修改用户

passwd给用户指定密码

userdel 删除用户

用户信息修改

组管理

group组

用户管理usermod,useradd,userdel

id 查找用户信息

groupadd police 创建组 police

groupdel police 删除组police

cat /etc/passwd 可以查看所有用户的列表

w 可以查看当前活跃的用户列表

cat /etc/group 查看用户组

groups 查看当前登录用户的组内成员

whoami 查看当前登录用户名

帮助指令

man ls  获取功能信息

help cd 获取shell内置命令功能信息

info ls 获取功能信息比man详细

 

搜索查找

find 指令搜索文件

locate指令可以快速定位文件路径

grep指令过滤查找

whereis

which

压缩和解压缩

gzip指令用于压缩文件

zip指令用于压缩文件或者目录

tar指令打包指令既可以压缩又可以解压打包文件后缀名是.tar.gz

 

chown修改文件/目录所有者

 chgrp修改文件/目录所在组

文件/目录其他组

权限管理

权限是指目录以及文件的权限,-rw-r--r--. 1 tom police 6  3月  18 19:24 ok.txt:这是一个权限字符串

rwx目录权限详解

chmod修改文件或者目录权限

chmod通过数字更改文件或者目录权限

umask默认权限

crond任务调度

任务表达式

crontab调用shell脚本

磁盘分区,挂载

mbr分区

gtp分区

linux分区

linux硬盘标识

lsblk -f:查看linux分区和挂载情况

给虚拟机增加一块硬盘

虚拟机添加硬盘

分区

格式化

挂载

设置可以自动挂载(永久挂载)

卸载

Linux开机自动挂载光驱cdrom

磁盘情况查询

df查询系统整体占用磁盘情况

du查询指定目录磁盘占用情况

一些实用的统计技巧

网络配置

查看ip,网关

ping 命令可以测试主机之间的网络连通、

linux网络环境配置-自动获取

inux网络环境配置-指定固定ip

修改防火墙

进程管理

进程的基本介绍

ps显示系统执行的进程

终止进程 kill 和 killall

查看进程树pstree

服务管理

查看服务

服务运行的级别

开机的流程说明

chkconfig指令

动态监控进程

查看系统网络情况 netstat

rpm和yum

rpm 包的简单查询指令:

rpm 包的其它查询指令:

卸载 rpm 包

安装 rpm 包

 rpm 包校验

 

数字证书

yum是rpm包的在线安装方式

yum 的基本指令

yum组管理命令

添加yum源

源码包

make命令

 

linux的目录结构及说明

命令格式

 


 

linux常规操作

linux学习笔记_第1张图片

linux目录结构

linux学习笔记_第2张图片

 linux常用操作

绝对路径 是一个以根目录 / 为起点的完整路径

pwd可以获取当前目录的绝对路径

输入目录结尾最好加“/”用于区分文件

有了绝对路径后,不管你当前在哪个目录下,都可以通过指令进入指定目录

如果忘记了目录名、文件名或命令,可使用 Tab 键自动补全,还可避免输入错误;连续按两次 Tab 可以显示全部候选结果。

ctrl+c终止一条正在执行的命令

sshd:ssh远程连接进程

bash:/bin/bash是终端进程,kill终端必须使用kill -9

可以在使用windows的telnet指令检测linux的某个端口是否开启telnet ip 端口

cat /etc/redhat-release 查看centos7以上的内核版本

[root@yangdong ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)

 lsb_release -a查看centos6.8以下的内核版本

uname -r查看当前系统相关信息

[root@yangdong ~]# uname -r
3.10.0-1062.el7.x86_64

添加环境变量

vim  /etc/profile

MYSQL_HOME=/usr/local/mysql
PATH=/usr/local/mysql/bin:$PATH
export MYSQL_HOME PATH

在 Linux 环境中,如果你遇到困难,可以使用 man 命令,它是 Manual pages 的缩写。例如输入 man cat ,可以获取 cat 命令的详细的帮助文件。进入到 man 的页面后,按 q 可以退出 man。有些命令可以使用 --help 选项查看帮助文档。

wget 是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议。在这里,我们使用 wget  语句,可以把源代码下载到本地。

ifconfig 查询IP地址

 

linux安装

网络适配器设置

ip地址,每一个网段只能分配253个地址,同一个网段的地址才能相互通信192.168.0.11,只有点三个网段都是0(或者其他相同数字)的机器之间才能相互通信

NAT模式:主机会出现两个ip地址,一个是主系统的用于对外通信,一个是用于主机和虚拟机通信和主系统的ip不在一个网段,linux可以通过主系统ip对外通信,外部不能直接访问linux 虚拟机使用的是虚拟网卡VMnet8

桥接模式:虚拟机获取独立的ip,可以与外界相互通信,公共环境下使用桥接方式容易造成ip地址不够用的情况,桥接模式使用的是本机的真实网卡,

主机模式:是把linux作为一个新主机,拥有独立的ip,但不是外界网段,不能访问外网,使用的是虚拟网卡1VMnet1

linux学习笔记_第3张图片

linux学习笔记_第4张图片 如果设置桥接模式可以根据情况选择适合的本地网卡,本地网卡有两个,一个是有线网卡,一个是无线网卡本机的无线网卡名是qualcomm,无线网卡名是realtekXXXX

 

 

划分磁盘空间

/boot分区存放linux启动时的引导文件,分配200M足够了

swap分区,无挂载点,也就是不在根目录下,这种分区是交换分区,当内存不足的时候可以用swap暂时替代内存,就是虚拟内存,分2G,一般和linux内存一样大

/根分区,剩下的内存全部给根分区

 

两种分区表形式 

MBR分区表:最大支持2.1TB硬盘,最多支持4个分区 • GPT分区表(全局唯一标示分区表):GPT支持9.4ZB 硬盘(1ZB=1024PB,1PB=1024EB,1EB=1024TB)。 理论上支持的分区数没有限制,但windows限制128个主 分区

分区类型

主分区:最多只能有4个。

扩展分区:

 最多只能有1个。

主分区加扩展分区最多有4个。

不能写入数据,只能包含逻辑分区

逻辑分区从第5个分区开始分

 

格式化:

格式化(高级格式化)又称逻辑格式化,它是指根据用户 选定的文件系统(如FAT16、FAT32、NTFS、EXT2、 EXT3、EXT4等),在磁盘的特定区域写入特定数据,在 分区中划出一片用于存放文件分配表、目录表等用于文件 管理的磁盘空间。

格式化的最主要目的是为了写入文件系统

格式化之后的分区会生成很多block,block是存储数据的最小单位,一个block只能存放一个文件

 

 

硬件设备文件名

linux学习笔记_第5张图片

sda1:sd代表接口类型,a代表第一块硬盘,1代表第一个分区

sdb5:第二块stat接口硬盘的第一个逻辑分区(逻辑分区从5开始,1-4是主分区和扩展分区)

 

挂载点(使用已存在的空目录作为挂载点)进入分区访问数据的入口

理论上所有的空目录,包括新建目录都可以作为挂载点,但是/bin,/lib,/etc目录除外,他们一定要和根目录处在同一个挂载点下

把设备连接到挂载点的过程叫做挂载

挂载

 必须分区

 / (根分区)

swap分区 (交换分区) • 如果真实内存小于4GB,swap位内存的两倍 • 如果真实内存大于4GB,swap和内存一致 • 实验环境,不大于2GB

 /boot (启动分区,1GB)

 常用分区

 /home (用于文件服务器)

 /www (用于Web服务器

vim基本介绍

三种常见模式

正常模式:可以复制,粘贴,删除,移动光标,

复制一行快捷键yy,复制光标下n行nyy,

粘贴快捷键p,

删除光标所在行dd,删除光标所在行以下n行ndd,

dG从光标所在行删除到文件尾

G回到首行,gg回到末行,

u撤销上一步操作,

ctrl+r反撤销

 

插入(编辑)模式:按下“i”进入

 

命令行模式:存盘,离开,查找。

:wq存盘退出,

:q退出,

:q!强制退出,

/关键字+回车=查找关键字,

:set  nu设置行号,

:set  nonu取消行号

:ab 源字符   替换为字符      字符替换

三种模式转换

一般模式+i=插入模式

一般模式+:=命令行模式

插入模式/命令行模式+esc键=一般模式

 

文件操作以及目录操作

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

ls 显示当前目录或者文件的信息

       ls -a 显示隐藏文件

       ls -l 以列表形式显示内容

cd 切换目录

绝对路径以根目录开始定位以/开始

相对路径,以当前目录为起点定位

..返回上一级目录

~或者:返回home目录

mkdir用于创建目录

还可以在 mkdir 后加入 -p 参数,一次性创建多级目录

rmdir删除空目录

如果目录非空则无法使用该指令删除

删除非空目录使用 rm -rf指令删除

touch用于创建文件

stat查看文件详细信息

[root@yangdong shelltest]# stat count.sh 
  文件:"count.sh"
  大小:332       	块:8          IO 块:4096   普通文件
设备:802h/2050d	Inode:531766      硬链接:1
权限:(0755/-rwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:default_t:s0
最近访问:2020-04-22 17:01:19.196795124 +0800
最近更改:2020-04-22 17:01:15.807795230 +0800
最近改动:2020-04-22 17:01:15.812795230 +0800
创建时间:-

 

cp用于复制文件

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

选项: -a: 相当于-dpr 选项的集合,这几个选项我们一一介绍

-d: 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接

-i: 询问,如果目标文件已经存在,则会询问是否覆盖

-p: 复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)

-r: 递归复制,用于复制目录

cp  hello  one/two 把hello文件复制到two目录下

如果要复制目录,需要在 cp 后加上 -r ,然后接上 目录名 目标目录名

cp -r test one/tow把test目录复制到two目录下

\cp强制复制,不提示覆盖

rm 删除文件

删除目录要加上-r

rm -r

-f强制删除不提示

mv 移动文件,移动目录要加上-r

 mv [选项] 源文件 目标文件

选项:

-f: 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖

-i: 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)

-v: 显示详细信息

mv还可以进行重命名

mv test1 test2把test1命名为test2

cat 可以将文件内容打印到屏幕上,只可浏览不可更改

cat -n 可以带行号打印文件内容

cat -n file | more 分页显示

| 是管道命令

 

more 以全屏幕方式按页显示文本文件的内容

空格键:向下翻页。

 b:向上翻页。

 回车键:向下滚动一行。

 /字符串:搜索指定的字符串。

 q:退出。

more file

less 作用与more相同

less效率更高,不会一次性读取整个文件,而是根据要求一点一点的读取

>输出重定向

>会将文件原来内容覆盖  和  >>追加不会覆盖原来文件的内容,而是追加内容到原文件尾部

ls -l > a.txt 将ls显示内容覆盖写入a.txt中,如果a.txt不存在则创建a.txt

ls -l >>a.txt 将ls显示内容追加到a.txt中

echo “xxxx” >> a.txt,追加xxxx到a.txt中

cat file >> a.txt 把file中内容追加到a.txt中

echo指令输出内容到控制台

echo $PATH输出环境变量

echo helloworld 直接输出文本 helloworld

head显示文件的开头10行内容

head -n 5 显示前5行内容,5可以是任何数

tail指令显示文件的后10行、

tail -n 5显示文件的后5行,5可以是任何数

tail -f实时追踪该文件的所有更新,如果有变化就会看到,很常用的指令

ln 软链接,软连接一定要写绝对路径

ln [选项] 源文件 目标文件

 -s:建立软链接文件。如果不加“-s”选项,则建立硬链接文件

-f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件

 

ln也叫符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径

ln -s /root LinkToRoot 创建名为LinkToRoot的软链接链接到/root目录下

rm -rf LinkToRoot 删除软链接,软链接被视为一个目录,删除软链接时不要带/否则会提示资源忙

使用pwd查看当前目录的时候仍然显示软链接所在目录

如果创建硬链接: ln /root/cangls /tmp/ #建立硬链接文件,目标文件没有写文件名,会和原名一致 也就是/root/cangls 和/tmp/cangls 是硬链接文件

如果创建软链接:ln -s /root/bols /tmp/ 建立软链接文件

硬链接与软连接的特征 硬链接特征: 源文件和硬链接文件拥有相同的 Inode 和 Block

修改任意一个文件,另一个都改变

删除任意一个文件,另一个都能使用

硬链接标记不清,很难确认硬链接文件位置,不建议使用

硬链接不能链接目录

 硬链接不能跨分区 软链接特征:

 软链接和源文件拥有不同的 Inode 和 Block

 两个文件修改任意一个,另一个都改变

 删除软链接,源文件不受影响;删除源文件,软链接不能使用

 软链接没有实际数据,只保存源文件的 Inode,不论源文件多大,软链接大小不变

 软链接的权限是最大权限 lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文 件权限

 软链接可以链接目录

 软链接可以跨分区

 软链接特征明显,建议使用软连接

history查看已经执行过的历史命令,也可以执行历史命令、

history 10 显示最近执行的10个指令10可以是任意数字、

!100执行历史记录编号为100的指令

 

时间日期类

cal 显示当前月日历

cal 2020显示2020年的日历

cal >> a.txt把日历追加到a.txt中

date显示当前日期

格式:2020年 02月 03日 星期一 16:21:56 CST

date  "+%Y"年

date  "+%m"月

date  "+%d"日

date  "+%H"时

date  "+%M"分

date  "+%S"秒

date  “+%Y-%m-%d-%H-%M-%S”自定义格式的年月日时分秒

date -s设置当前时间 date -s "2020-2-3 16:35:40"时间字符串格式固定

 

系统设置以及开机关机

setup打开系统设置以及防火墙设置

reboot重新启动

shutdown

shutdown -r  now 立即重启

shutdown -h now 立即关机

shutdown -h 1 一分钟后关机、

sycn 把内存里的东西存储到硬盘中,存档

init【012356】切换运行级别

0关机,1单用户,6重启,5图形界面,

修改root密码操作步骤

单用户可以不登录使用root用户,用于修改root密码操作步骤

1.在进入系统倒计时前用enter键进入系统选择界面

2.选择系统然后点e进入系统设置界面

3.选择kernel,点e进行设置

4.进入设置洁面后点空格,然后点1

5返回到kernel后点b引导系统进入单用户模式

 

用户和组

用户相关文件
[root@yangdong ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
1 /etc/passwd 用户信息文件
root:x:0:0:root:/root:/bin/bash
第一列: 用户名
第二列: 密码位
第三列: 用户 ID
0
超级用户 UID。如果用户 UID 为 0,代表这个账号是管理员账号。那 Linux 中
如何把普通用户升级成为管理员呢?就是把其他用户的 UID 修改为 0 就可以了,这点和
Windows 是不同的。不过不建议建立多个管理员账号。
1-499 系统用户(伪用户)UID。这些 UID 账号是系统保留给系统用户的 UID,也就是
说 UID 是 1-499 范围内的用户是不能登录系统的,而是用来运行系统或服务的。其中
1-99 是系统保留的账号,系统自动创建。100-499是预留给用户创建系统账号的。
500-60000 普通用户 UID。建立的普通用户 UID 从 500 开始,最大到 60000。这些用
户足够使用了,但是如果不够也不用害怕,2.6.x 内核以后的 Linux 系统用户 UID 已经
可以支持 2 32 这么多了。
第四列:组 ID
GID 添加用户时,如果不指定用户所属的初始组,那么会建立和用户名相
同的组
第五列: 用户说明
第六列: 用户家目录 ~
第七列: 登录 shell /bin/bash
如何把普通用户变成超级用户:把用户 UID 改为 0
 
/etc/shadow 影子文件
root:$6$9w5Td6lg$bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fI38RH15wzVoomff9isV1Pzd
cXmixzhnMVhMxbv0:15775:0:99999:7:::
第一列: 用户名
第二列: 加密密码 我们也可以在密码前人为的加入“!”或“*”改变加密值让密码暂时失效,使这个用
户无法登陆,达到暂时禁止用户登录的效果。 注意所有伪用户的密码都是“!!”或“*”,代表没有密码是不能登录的。当然我新 创建的用户如果不设定密码,它的密码项也是“!!”,代表这个用户没有密码,不能登录
第三列: 密码最近更改时间, 1970 年 1 月 1 日作为标准时间 时间戳转日期
第四列: 两次密码的修改间隔时间(和第 3 字段相比)
第五例: 密码有效期(和第 3 字段相比)
第六列: 密码修改到期前的警告天数(和第 5 字段相比)
第七列: 密码过期后的宽限天数(和第 5 字段相比)
第八列: 密码失效时间 这里同样要写时间戳,也就是用 1970 年 1 月 1 日进行时间换算。如果超过了 失效时间,就算密码没有过期,用户也就失效无法使用了
第九列: 保留
/etc/group 组信息文件
root:x:0:root
第一列: 组名
第二列: 组密码位
第三列: GID
第四列: 此组中支持的其他用户.附加组是此组的用户
初始组:每个用户初始组只能有一个,初始组只能有一个,一般都是和用户名相同的组作为 初始组
附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组
4 组密码文件/etc/gshadow
如果我给用户组设定了组管理员,并给该用户组设定了组密码,组密码就保存在这个文件当中。
组管理员就可以利用这个密码管理这个用户组了。
5 用户的家目录
6 用户邮箱目录 这个邮箱在/var/spool/mail 目录当中,例如 user1 用户的邮箱就是/var/spool/mail/user1 文 件
7 用户模板目录

su 切换用户

exit 返回原来用户

logout注销用户,在图形界面无效

useradd 创建用户,最好不要添加选项,最常用的是添加附加组-G

useradd选项
-u 550 指定 UID
-g 组名 指定初始组 不要手工指定
-G 组名 指定附加组,把用户加入组,使用附加组
-c 说明 添加说明
-d 目录 手工指定家目录,目录不需要事先建立
-s shell /bin/bash.
 
useradd默认值
vim /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
GROUP=100 这个选项是建立用户的默认组,也就是说添加每个用户时,用户的初始组就是 GID 为 100 的这个 用户组。目前我们采用的机制私有用户组机制。
HOME=/home 这个选项是用户的家目录的默认位置,所以所有的新建用户的家目录默认都在/home/下。
INACTIVE=-1 这个选项就是密码过期后的宽限天数,也就是/etc/shadow 文件的第七个字段。如果是天数,比 如 10 代表密码过期后 10 天后失效;如果是 0,代表密码过期后立即失效;如果是-1,则代表密码永 远不会失效。这里默认值是-1,所以所有新建立的用户密码都不会失效。
EXPIRE= 这个选项是密码失效时间,也就是/etc/shadow 文件的第八个字段。也就说用户到达这个日期后 就会直接失效。当然这里也是使用时间戳来表示日期的。默认值是空,所以所有新建用户没有失效时 间,永久有效。
SHELL=/bin/bash 这个选项是用户的默认 shell 的。/bin/bash 是 Linux 的标志 shell,所以所有新建立的用户默 认都具备 shell 赋予的权限。
SKEL=/etc/skel 这个选项就是定义用户的模板目录的位置,/etc/skel/目录中的文件都会复制到新建用户的家目 录当中。
CREATE_MAIL_SPOOL=yes 这个选项定义是否给新建用户建立邮箱,默认是创建,也就是说所有的新建用户系统都会新建一 个邮箱,放在/var/spool/mail/下和用户名相同。
vim /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 500
UID_MAX 60000
GID_MIN 500
GID_MAX 60000
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
MAIL_DIR /var/spool/mail 这行指定了新建用户的默认邮箱位置。比如 user1 用户的邮箱是就是/var/spool/mail/user1。
PASS_MAX_DAYS 99999 这行指定的是密码的有效期,也就是/etc/shadow 文件的第五字段。代表多少天之后必须修改密 码,默认值是 99999。
PASS_MIN_DAYS 0 这行指定的是两次密码的修改间隔时间,也就是/etc/shadow 文件的第四字段。代表第一次修改
密码之后,几天后才能再次修改密码。默认值是 0。
PASS_MIN_LEN 5 这行代表密码的最小长度,默认不小于 5 位。但是我们现在用户登录时验证已经被 PAM 模块取代,
所以这个选项并不生效。
PASS_WARN_AGE 7 这行代表密码修改到期前的警告天数,也就是/etc/shadow 文件的第六字段。代表密码到底有效
期前多少天开始进行警告提醒,默认值是 7 天。
UID_MIN 500
UID_MAX 60000 这两行代表创建用户时,最小 UID 和最大的 UID 的范围。我们 2.6.x 内核开始,Linux 用户的 UID
最大可以支持 2 32 这么多,但是真正使用时最大范围是 60000。还要注意如果我手工指定了一个用户的 UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500-549 之间的 UID 没有使用(小 于 500 的 UID 是给伪用户预留的)。
GID_MIN 500
GID_MAX 60000 这两行指定了 GID 的最小值和最大值之间的范围。
CREATE_HOME yes 这行指定建立用户时是否自动建立用户的家目录,默认是建立
UMASK 077 这行指定的是建立的用户家目录的默认权限,因为 umask 值是 077,所以新建的用户家目录的权 限是 700,
USERGROUPS_ENAB yes 这行指定的是使用命令 userdel 删除用户时,是否删除用户的初始组,默认是删除。
ENCRYPT_METHOD SHA512 这行指定 Linux 用户的密码使用 SHA512 散列模式加密,这是新的密码加密模式,原先的 Linux 只能用 DES 或 MD5 方式加密
 

如果没有指定组会自动创建和用户名同名的组

useradd -g police tom,创建tom用户并将tom用户添加到police组

usermod修改用户

usermod -g police tom 修改tom用户的组,把tom用户添加到police组里

usermod -d /home/zhuomian tom 修改用户tom初始登录目录

passwd给用户指定密码

选项:
-l: 暂时锁定用户。仅 root 用户可用
-u: 解锁用户。仅 root 用户可用
--stdin: 可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用
[root@localhost ~]# echo "123" | passwd --stdin user1
更改用户 user1 的密码 。
 
[root@localhost ~]#passwd
#passwd 直接回车代表修改当前用户的密码
 

passwd tom 给用户tom指定密码

userdel 删除用户

userdel tom 删除用户tom但保留用户目录

userdel -r  tom 删除用户tom 以及用户目录

手工删除目录

手工删除用户试验:手工删除,如果可以正常建立用户,证明用户删除干净。
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/home/user1
/var/spool/mail/user1 邮箱

用户信息修改

usermod 命令是修改已经添加的用户的信息的
选项:
-u UID: 修改用户的 UID
-d 家目录: 修改用户的家目录。家目录必须写绝对路径
-c 用户说明: 修改用户的说明信息,就是/etc/passwd 文件的第五个字段
-g 组名: 修改用户的初始组,就是/etc/passwd 文件的第四个字段
-G 组名: 修改用户的附加组,其实就是把用户加入其他用户组
-s shell: 修改用户的登录 Shell。默认是/bin/bash
-e 日期: 修改用户的失效日期,格式为“YYYY-MM-DD”。也就是/etc/shadow 文件的第八个字段
 
 

组管理

group组

linux每个用户必须属于一个组,不能独立于组外

groupadd police 创建组 police

删除用户组:groupdel

把用户添加进组或从组中删除:gpasswd

选项:
-a 用户名: 把用户加入组
-d 用户名: 把用户从组中删除
 

改变有效组:newgrp

newgrp 组名

我们已经有了普通用户 user1,默认会建立 user1 用户组,user1 组是 user1 用户的
初始组。我们再把 user1 用户加入 group1 组,那么 group1 组就是 user1 用户的附加组。当 user1 用
户创建文件 test1 时,test1 文件的属组是 user1 组,因为 user1 组是 user1 用户的有效组。通过 newgrp
命令就可以把 user1 用户的有效组变成 group1 组,当 user1 用户创建文件 test2 时,就会发现 test2
文件的属组就是 group1 组。
[root@localhost ~]# groupadd group1
#添加组 group1
[root@localhost ~]# gpasswd -a user1 group1
Adding user user1 to group group1
#把 user1 用户加入 group1 组
[root@localhost ~]# grep "user1" /etc/group
user1:x:501:
group1:x:503:user1
#user1 用户既属于 user1 组,也属于 group1 组
[root@localhost ~]# su – user1
#切换成 user1 身份,超级用户切换成普通用户不用密码
[user1@localhost ~]$ touch test1
#创建文件 test1
[user1@localhost ~]$ ll test1
-rw-rw-r-- 1 user1 user1 0 1 月 14 05:43 test1
#test1 文件的默认属组是 user1 组 [user1@localhost ~]$ newgrp group1
#切换 user1 用户的有效组为 group1 组 [user1@localhost ~]$ touch test2
#创建文件 test2
[user1@localhost ~]$ ll test2
-rw-r--r-- 1 user1 group1 0 1 月 14 05:44 test2
#test2 文件的默认属组是 group1 组
 

 

用户管理usermod,useradd,userdel

useradd 创建用户,如果没有指定组会自动创建和用户名同名的组

useradd -g police tom,创建tom用户并将tom用户添加到police组

usermod -g police tom 修改tom用户的组,把tom用户添加到police组里

usermod -d /home/zhuomian tom 修改用户tom初始登录目录

passwd tom 给用户tom指定密码

userdel tom 删除用户tom但保留用户目录

userdel -r  tom 删除用户tom 以及用户目录

id  user查询用户user信息

 

id 查找用户信息

id  user查询用户user信息

groupadd police 创建组 police

groupdel police 删除组police

cat /etc/passwd 可以查看所有用户的列表


w 可以查看当前活跃的用户列表


cat /etc/group 查看用户组

 

groups 查看当前登录用户的组内成员

groups gliethttp 查看gliethttp用户所在的组,以及组内成员

whoami 查看当前登录用户名

 

 

 

帮助指令

man ls  获取功能信息

help cd 获取shell内置命令功能信息

info ls 获取功能信息比man详细

 

搜索查找

find 指令搜索文件

find  /home -name hello.txt:表示在home目录下根据名字查找hello.txt文档

find /opt -user root:表示在opt目录下寻找root用户的文件

find / -size +20M表示在根目录下寻找文件大小大于20M的文件

locate指令可以快速定位文件路径

locate在使用之前必须使用updatedb指令创建locate数据库

先使用updatedb指令更新locate数据库,再使用locate指令查找

locate hello.txt 定位hello.txt

grep指令过滤查找

grep通常和“|”符号将上一个指令的结果输出给后面的指令处理

cat hello.txt | grep hello将cat指令战士hello文档,交给grep指令处理用于查找hello

cat hello.txt | grep -n hello查找hello并标注所在的行

cat hello.txt | grep -i hello查找hello不区分大小写

whereis

whereis 是搜索系统命令的命令(像绕口令一样),也就是说,whereis 命令不能搜索普通文件, 而只能搜索系统命令。

which

which 也是搜索系统命令的命令。和 whereis 命令的区别在于:

 whereis 命令可以在查找到二进制命令的同时,查找到帮助文档的位置;

 而 which 命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令

whereis和which常用于搜索软件安装位置

[root@yangdong shelltest]# whereis java
java: /usr/lib/java /etc/java /usr/share/java /opt/jdk1.8.0_141/bin/java
[root@yangdong shelltest]# which java
/opt/jdk1.8.0_141/bin/java

压缩和解压缩

gzip指令用于压缩文件

gzip只能将文件压缩为*.gz,压缩之后原文件消失和gunzip指令用于解压文件只能解压*.gz类型文件

zip指令用于压缩文件或者目录

zip压缩之后原文件不消失,和   unzip指令用于解压文件或者目录,这两个命令在项目打包发布时很有用

zip -r mypackage.zip /home  递归的压缩home目录下所有文件及目录打包成mypackage.zip

unzip -d  /opt  mypackage.zip 解压mypackage.zip到opt目录下

tar指令打包指令既可以压缩又可以解压打包文件后缀名是.tar.gz

tar -c 产生tar打包文件

tar -v 显示详细信息

tar -f 指定压缩后的文件名

tar -z 打包的同时压缩

tar -x 解包.tar文件

tar -zcvf a.tar.gz a.txt b.txt  对ab两个文档进行打包压缩,压缩文件名为a.tar.gz,打包后ab文档不消失

tar -zcvf myhome.tar.gz /home 对home下的文件及目录进行打包

tar -zxvf a.tar.gz 把a.tar.gz解压到当前目录

tar -zxvf myhome.tar.gz -C /opt 将myhome解压到opt目录下前提是opt目录必须要有,否则报错

 

chown修改文件/目录所有者

ls -ahl查看文件所有者,以及所在组。

chown user ok.txt  修改文件所有者,但不修改文件所在组。

chown -R user kkk 可以递归地把目录kkk下所有文件和子目录的所有者给user

 chgrp修改文件/目录所在组

文件创建后该文件所在组默认就是文件创建者的所在组

chgrp police apple.txt 更改文件apple所在组到police组

chgrp -R police kkk 可以递归地把目录kkk下所有文件和子目录的组更改为police

文件/目录其他组

除文件所有者和所在组之外,系统的其他用户都是文件的其他组

 

权限管理

权限是指目录以及文件的权限,-rw-r--r--. 1 tom police 6  3月  18 19:24 ok.txt:这是一个权限字符串

第一个字符“-”表示普通文件,“d”目录,“l”软链接,“c”字符设备(键盘鼠标),“b”块文件,硬盘。“p”:管道符文件。这是一种非常少见的特殊设备文件。 -“s”:套接字文件。这也是一种特殊设备文件,一些服务支持 Socket 访问,就会产生这样 的文件

第二组字符“rw-”表示文件的拥有者具有读写权限

第三组字符“r--”表示文件所在组的用户拥有只读权限。

第四组字符“r--”表示文件的其他组用户拥有只读权限

数字“1”如果是文件则表示文件的硬链接数,如果是目录则表示该目录的子目录数

tom是文件所有者

police是文件所在组

6是文件大小如果是目录则是4096

日期是文件最后修改日期

0-9位表示文件或者目录的权限,第0位表示文件类型,其余的三位一组分别表示拥有者权限,所在组权限,其他组权限

rwx文件权限详解

r:读取权限,只能查看

w:写的权限,可以修改,但不一定能删除,删除权限的前提是有w权限

x:(execute)可被执行

rwx目录权限详解

r:可以用ls查看目录内容

w:可以在目录内创建,修改,重命名,删除文件及目录

x:可以进入该目录

chmod修改文件或者目录权限

chmod用+,-,=更改权限,u所有者,g所有组,o其他人,a所有人

chmod u=rwx,g=rx,o=x hello.java:给hello文件的拥有者所有权限,给hello文件所在组读和执行的权限,给其他人执行的权限

chmod o+w hello.java 给hello文件的其他人增加写的权限

chmod a-x hello.java 给hello文件的所有人去除执行权限

chmod通过数字更改文件或者目录权限

r=4,w=2,x=1,顺序和权限字符串一样,所有者,所在组,其他组,如果某一个选项没有权限则是0

chmod u=rwx,g=rx,o=x hello.java等价于chmod 751 hello.java

umask默认权限

 查看系统的 umask 权限 
用八进制数值显示 umask 权限

[root@localhost ~]# umask
0022 
[root@localhost ~]# umask -S 

u=rwx,g=rx,o=rx

用字母表示文件和目录的初始权限 .

umask 权限的计算方法 我们需要先了解一下新建文件和目录的默认最大权限。

 对文件来讲,新建文件的默认最大权限是 666,没有执行(x)权限。这是因为执行权限对文件 来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。

 对目录来讲,新建目录的默认最大权限是 777。这是因为对目录而言,执行(x)权限仅仅代表 进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。

按照官方的标准算法,umask 默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到 正确的新建文件和目录的默认权限。这种方法既不好计算,也不好理解,。 我们在这里还是按照权限字母来讲解 umask 权限的计算方法。我们就按照默认的 umask 值是 022 来分别计算一下新建文件和目录的默认权限吧。

 文件的默认权限最大只能是 666,而 umask 的值是 022 “-rw-rw-rw-”减去 “-----w--w-”等于“-rw-r--r—”

 目录的默认权限最大可以是 777,而 umask 的值是 022 “drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x” 注意:umask 默认权限的计算绝不是数字直接相减。

例如 umask 是 033 呢? 

文件的默认权限最大只能是 666,而 umask 的值是 033 “-rw-rw-rw-”减去“-----wx-wx”等于“-rw-r--r—”

修改默认权限

修改 etc/profile的这段

if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

系统用户uid从0开始,root的uid是0

普通用户的uid从500开始

 

 

crond任务调度

crontab定时的调度我们的脚本或者代码,如果只是简单的任务可以不用写脚本,直接在crontab中加入任务就行。对于复杂的任务需要写脚本shell编程

crontab -e打开任务调度文件进行编辑

crontab -r终止任务调度

crontab -l列出当前有哪些任务调度

service crond restart 重启任务调度

任务表达式

*/1 * * * * ls -l /etc >> /tmp/to.txt是一段任务编辑文件的任务代码。表示每隔一分钟执行一次任务

任务调度代码参数说明:*/n表示每隔n分钟执行一次

第1个“*”代表一小时中的第几分钟可选0-59.。45 22 * * * 22点45分执行一次

第2个“*”是一天中的第几个小时可选0-23。45 22 * * * 22点45分执行一次

第3个“*”是一个月中的第几天可选1-31。5 5 1,15 * * 每个月的1号15号5点5分执行一次

第4个“*”是一年中的第几个月可选1-12。5 5 1,15  1-3* 1-3月的1号15号5点5分执行一次

第5个“*”是一周当中的星期几可选0-7,0和7都代表星期日。5 5 * * 1每周一的5点5分执行一次

“,”代表不连续的时间。

“-”代表连续的时间。

crontab调用shell脚本

shell脚本的编写:1.创建后缀名为.sh的文件,2.编写脚本,3.赋予可执行权限

创建并编辑脚本vim mytask.sh

给脚本增加可执行权限chmod 777 mytask.sh

打开任务编辑crontab -e

设置定时执行脚本的任务*/1 * * * * /home/mytask.sh

 

磁盘分区,挂载

mbr分区

mbr最多有4个主分区

系统只能安装在主分区

扩展分区要占一个主分区

mbr最多支持2tb但拥有最好的兼容性

gtp分区

支持无限多个分区

最大支持18eb

win764位之后支持gtp分区

linux分区

linux的分区是要挂载到目录之上的

mount挂载

unmount卸载

linux硬盘标识

驱动器标识符如果是hda3,hd表示该硬盘是ide硬盘,a是盘号,a基本盘,b基本从属盘,c辅助主盘,d辅助从属盘,1-4表示主分区或者扩展分区,5之后是逻辑分区。hda3表示第一块ide硬盘的第三个主分区或者扩展分区

sda2:sd表示该硬盘是scsi硬盘其他的和ide硬盘标识一样

lsblk -f:查看linux分区和挂载情况

NAME                        FSTYPE      LABEL UUID唯一标识                                   MOUNTPOINT挂载点
sr0                                                                                  
sda                                                                                  
├─sda1                      ext4              a4e5f5b9-7d98-4403-9c19-75e8b91488a2   /boot
└─sda2                      LVM2_member       9finHA-0EJX-fMa3-30PR-uIMF-uke5-Ikb0rL 
  ├─VolGroup-lv_root (dm-0) ext4              3e587fae-200f-43a1-95ee-49d9ceec449b   /
  └─VolGroup-lv_swap (dm-1) swap              bbdbd9f1-ee58-4e02-a97a-a7d2aaa3dffe   [SWAP]

给虚拟机增加一块硬盘

虚拟机添加硬盘

添加硬盘之后在linux的dev目录下可以找到该硬盘

分区

fdisk /dev/sdb,此命令会进入选项,m显示命令列表,p显示磁盘分区

同fdisk -l,n新增分区,d删除分区,w写入并退出

 

格式化

mkfs -t ext4 /dev/sdb1

挂载

mount /dev/sdb1 /home/newdisk

设置可以自动挂载(永久挂载)

vim /etc/fstab   把uuid改为挂载的目录

#
# /etc/fstab
# Created by anaconda on Fri Apr  3 12:30:05 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=8d4914c5-f9a3-4327-9a0b-c343d11eca30 /                       ext4    defaults        1 1
UUID=98ef5ca2-8d2d-4cc3-80bb-f76a7b34f985 /boot                   ext4    defaults        1 2
UUID=d389efc4-7d0b-4e19-8537-1685db3b2634 swap                    swap    defaults        0 0
/dev/sr0 /mnt/cdrom auto exec 0 0

mount -a

一般我们在/etc/fstab中 配置好uuid和挂载路径后,使用mount -a 一下 在重新启动虚拟机

mount -a 就是重新加载fstab文件中的内容
相当于更新你刚刚修改fstab文件内容

卸载

unmount /dev/sdb1

Linux开机自动挂载光驱cdrom

方法一:新建一个挂载点,并挂载

mkdir /media/cdrom

修改/etc/fstab文件。在该文件最后按顺序添加如下内容:

 /dev/sr0 /mnt/cdrom auto exec 0 0

临时挂载光驱 

mount -t auto /dev/sr0 /mnt

 

磁盘情况查询

df查询系统整体占用磁盘情况

df -h:查询系统整体占用磁盘情况

df -lh查询系统磁盘使用情况

du查询指定目录磁盘占用情况

-a含文件

-s指定目录占用大小汇总

-h带计量单位

--max-depth=1 子目录深度

-c 列出明细的同时增加汇总值

du -ach --max-depth=1 /opt :查询opt目录所占用的空间明细

 

一些实用的统计技巧

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目录下目录个数递归的统计子目录

 

网络配置

只有linux系统安装了net-tools,网络配置的相关命令才可以执行

yum -y install  net-tools

查看ip,网关

在虚拟机里面的编辑菜单下选择虚拟网络编辑器可以查看ip,网关

NAT模式虚拟机与外网获取连接都需要通过一个虚拟网卡获取连接vmnet8

linux学习笔记_第6张图片

ping 命令可以测试主机之间的网络连通、

ping www.baidu.com 查看主机和网站之间是否连通,如果连通则可以访问该网站

ping 192.168.1.5 也可以ping一个ip

curl 命令 通过指定的URL来上传或下载数据,并将数据展示出来。curl中的c表示client,而URL,就是URL。这里我们介绍一下curl的使用。

安装curl

yum install -y curl

安装之后还要看看系统 有没有开启路由功能

执行echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf 或者使用vim命令在00-system.conf的最后一行添加net.ipv4.ip_forward=1,这行代码的作用是开启路由功能。

linux网络环境配置-自动获取

系统>首选项>网络连接,选择自动连接,ipv4选择自动

缺点: linux 启动后会自动获取 IP,缺点是每次自动获取的 ip 地址可能不一样。这个不适用于做 服务器,因为我们的服务器的 ip 需要时固定的。

inux网络环境配置-指定固定ip

直 接 修 改 配 置 文 件 来 指 定 IP, 并 可 以 连 接 到 外 网 ( 程 序 员 推 荐 ) , 编 辑vi /etc/sysconfig/network-scripts/ifcfg-eth0

 

DEVICE=eth0
TYPE=Ethernet
UUID=42a3412c-bb30-4b05-880c-b057ad2a6555
ONBOOT=yes
NM_CONTROLLED=yes     启动boot,配置成yes
BOOTPROTO=static            声明以静态方式获取ip
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=00:0C:29:E0:C3:7C
PEERDNS=yes
PEERROUTES=yes
LAST_CONNECT=1577386717
IPADDR=192.168.93.134            指定ip
GATEWAY=192.168.93.2             网关
DNS1=192.168.93.2                     dns和网关保持一致
 

修改后,一定要 重启服务或者重启系统
 

1) service network restart

2) reboot 重启系统

linux学习笔记_第7张图片

 

修改防火墙

vim  /etc/sysconfig/iptables

yy复制端口号22那一行然后用p粘贴再把22改为8080

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
 

centos7修改防火墙

查看防火墙状态
systemctl status firewalld  

firewall-cmd --state

开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop


查看防火墙规则

firewall-cmd --list-all 

查询、开放、关闭端口

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp

#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;

 

进程管理

进程的基本介绍

LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号。 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www 服务器。 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进 行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束
 

ps显示系统执行的进程

ps -aux,a显示当前终端所有进程信息,u以用户的格式显示进程信息,x显示后台进程运行参数

ps -aux | grep sshd 查看含sshd的进程

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root             1       0.1        0.0      2900  1428     ?        Ss       21:58   0:01     /sbin/init
root             2        0.0       0.0          0        0         ?        S         21:58   0:00    [kthreadd]

USER :用户名称
 
PID :进程号
 
%CPU :进程占用 CPU 的百分比
 
%MEM:进程占用物理内存的百分比
 
VSZ :进程占用的虚拟内存大小(单位: KB
 
RSS :进程占用的物理内存大小(单位: KB
 
TT :终端名称 , 缩写 .
 
STAT :进程状态,其中 S- 睡眠, s- 表示该进程是会话的先导进程, N- 表示进程拥有比普
通优先级更低的优先级, R- 正在运行, D- 短期等待, Z- 僵死进程, T- 被跟踪或者被停止等等
 
STARTED :进程的启动时间
 
TIME CPU 时间,即进程使用 CPU 的总时间
 
COMMAND :启动进程所用的命令和参数,如果过长会被截断显示

ps -ef 以全格式显示当前所有进程,e显示所有进程,f全格式

ps -ef | grep sshd 可以查找sshd的父进程id

UID        PID  PPID  C  STIME  TTY          TIME        CMD
root         1        0       0  21:58    ?             00:00:01  /sbin/init
root         2        0       0  21:58    ?             00:00:00  [kthreadd]
root         3        2       0  21:58    ?             00:00:00  [migration/0]
root         4        2       0  21:58    ?             00:00:00  [ksoftirqd/0]
root         5        2       0  21:58    ?             00:00:00  [stopper/0]
root         6        2       0  21:58    ?             00:00:00  [watchdog/0]

UID:用户 ID

PID:进程 ID

PPID:父进程 ID

C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高

STIME:进程启动的时间

TTY:完整的终端名称

TIME:CPU 时间

CMD:启动进程所用的命令和参数

终止进程 kill 和 killall

基本语法:

kill [选项] 进程号(功能描述:通过进程号杀死进程),killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用),-9 :表示强迫进程立即停止

踢掉一个非法登录用户过程

1.查看连接进程 ps -axu | grep sshd

[root@localhost ~]# ps -aux |grep sshd
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root      2569  0.0  0.0   9520   996 ?        Ss   21:58   0:00 /usr/sbin/sshd
root      3155  0.0  0.1  11704  3404 ?        Ss   21:59   0:00 sshd: root@pts/0 
root      3889  0.8  0.1  11572  3272 ?        Ss   22:37   0:00 sshd: user [priv]
user      3893  0.1  0.0  11700  1644 ?        S    22:37   0:00 sshd: user@pts/2 
root      3919  0.0  0.0   6056   780 pts/0    S+   22:37   0:00 grep sshd
 

2.找到非法连接的进程id然后杀掉 kill 3893

[root@localhost ~]# kill 3893

killall gredit 终止一个编辑器

强制杀掉一个终端

1查看打开的终端

[root@localhost ~]# ps -aux |grep bash
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root      3159  0.0  0.0   6744  1680 pts/0    Ss   21:59   0:00 -bash
root      3655  0.0  0.0   6824  1656 pts/1    Ss+  22:06   0:00 /bin/bash
user      3946  0.0  0.0   6744  1596 pts/2    Ss+  22:44   0:00 -bash
root      4014  0.0  0.0   6056   780 pts/0    S+   22:51   0:00 grep bash
 

2找到要关闭的终端kill 3655

查看进程树pstree

pstree [选项] ,可以更加直观的来看进程信息,常用选项:-p :显示进程的 PID,-u :显示进程的所属用户

[root@localhost ~]# pstree -p
init(1)─┬─NetworkManager(2344)
        ├─VGAuthService(1899)
        ├─abrtd(2879)
        ├─acpid(2443)
        ├─atd(2906)
        ├─auditd(2187)───{auditd}(2188)
        ├─automount(2531)─┬─{automount}(2532)
        │                 ├─{automount}(2533)
        │                 ├─{automount}(2536)
        │                 └─{automount}(2539)
        ├─bluetoothd(2558)
        ├─bonobo-activati(3355)───{bonobo-activat}(3356)
        ├─certmonger(2922)
        ├─clock-applet(3385)
        ├─console-kit-dae(3014)─┬─{console-kit-da}(3015)
        │                       ├─{console-kit-da}(3016)
 

 

服务管理

服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请 求,比如(mysql监听3306 , sshd监听22 防火墙iptables监听所有端口。。等),因此我们又称为守护进程。

service mysql/sshd/iptables  [start | stop | restart | reload | status]

使用service指令关闭或者开启一个服务后会立即生效

这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。 如果希望设置某个服务自启动或关闭永久生效,要使用 chkconfig 指令

查看服务

1.使用setup选择系统服务可以看到开启的服务

2.ls -l /etc/init.d/服务名称

[root@localhost ~]# ls -l /etc/init.d/
总用量 428
-rwxr-xr-x. 1 root root  1288 7月  25 2015 abrt-ccpp
-rwxr-xr-x. 1 root root  1628 7月  25 2015 abrtd
-rwxr-xr-x. 1 root root  1642 7月  25 2015 abrt-oops
-rwxr-xr-x. 1 root root  1725 11月 11 2010 acpid
-rwxr-xr-x. 1 root root  2062 2月  20 2015 atd
-rwxr-xr-x. 1 root root  3580 10月 15 2014 auditd

服务运行的级别

Linux 系统有 7 种运行级别 (runlevel) :常用的是级别 3 5
 

运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动

运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆

运行级别 2:多用户状态(没有 NFS),不支持网络

运行级别 3:完全的多用户状态(NFS),登陆后进入控制台命令行模式

运行级别 4:系统未使用,保留

运行级别 5X11 控制台,登陆后进入图形 GUI 模式

运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动

开机的流程说明

1.bios

2./boot

3.init进程1

4.运行级别

查看运行级别在etc目录下的inittab文件内

[root@localhost etc]# cat inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)

id:5:initdefault:     默认运行级别是5

5.运行级别对应的服务

chkconfig指令

通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭。

查看服务运行级别 chkconfig --list | grep 服务

查看所有服务的运行级别

[root@localhost etc]# chkconfig --list
NetworkManager     0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
abrt-ccpp          0:关闭    1:关闭    2:关闭    3:启用    4:关闭    5:启用    6:关闭
abrtd              0:关闭    1:关闭    2:关闭    3:启用    4:关闭    5:启用    6:关闭
acpid              0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
atd                0:关闭    1:关闭    2:关闭    3:启用    4:启用    5:启用    6:关闭
auditd             0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
autofs             0:关闭    1:关闭    2:关闭    3:启用    4:启用    5:启用    6:关闭

 

查看iptables(防火墙)的运行级别两个效果一样

[root@localhost etc]# chkconfig iptables --list
iptables           0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭


[root@localhost etc]# chkconfig --list iptables
iptables           0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
 

修改服务运行级别chkconfig  --level 5  服务名  on/off

在运行级别5关闭防火墙

[root@localhost etc]# chkconfig --level 5 iptables off
[root@localhost etc]# chkconfig --list iptables
iptables           0:关闭    1:关闭    2:启用    3:启用    4:启用    5:关闭    6:关闭

运行级别5开启防火墙

[root@localhost etc]# chkconfig --level 5 iptables on
[root@localhost etc]# chkconfig --list iptables
iptables           0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭

所有的运行级别下关闭防火墙
[root@localhost etc]# chkconfig iptables off
[root@localhost etc]# chkconfig --list iptables
iptables           0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
 

所有的运行级别下开启防火墙

[root@localhost etc]# chkconfig iptables on
[root@localhost etc]# chkconfig --list iptables
iptables           0:开启   1:开启    2:开启    3:开启    4:开启    5:开启    6:开启
 

chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 才能生效
 
 
 

动态监控进程

top ps 命令很相似。它们都用来显示正在执行的进程。 Top ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。类似于windows的进程管理器

top -d 10 每隔10秒刷新一次,默认3秒刷新一次

top -i 不显示任何闲置或者僵死进程

top -p 进程id  监控某个进程的状态

交互操作1(按键既有效果)

P(大写)以cpu使用率排序,默认是此项

M(大写)以内存使用率排序

N(大写)以pid排序

q 退出top

交互操作2(输入命令后按回车键进行后续操作)

u 监控某个用户(回车后输入用户名)

k杀掉某一个进程(需要回车后输入进程id)

top - 23:50:38(当前时间) up  2:09(系统运行时间),  2 users(活跃用户数量),  load average(负载均衡): 0.01, 0.01, 0.00
Tasks: 201 (进程数量)total,   1 running, 200 sleeping,   0 stopped,   0 zombie
Cpu(s):(cpu使用率)  0.0%us,  0.1%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem: (内存使用率)  1936880k total,  1026080k used,   910800k free,    25556k buffers
Swap:  2064380k total,        0k used,  2064380k free,   376384k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                  
 4150 root      20   0  2708 1172  880 R  0.3  0.1   0:01.51 top                                       
    1 root      20   0  2900 1428 1208 S  0.0  0.1   0:01.59 init                                      
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                  
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.02 migration/0                               
    4 root      20   0     0    0    0 S  0.0  0.0   0:00.05 ksoftirqd/0                               
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0    

 

查看系统网络情况 netstat

通常只会用到netstat --anp:查看所有的网络服务

netstat - lntp 查看所有的监听端口

[root@yangdong shelltest]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1566/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1953/master         
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1563/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1566/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1953/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      3501/docker-proxy   
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::8848                 :::*                    LISTEN      3663/java           
tcp6       0      0 :::22                   :::*                    LISTEN      1563/sshd    

 

-an 按一定顺序排列输出

-p 显示哪个进程在调用

[root@localhost etc]# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2271/rpcbind        
tcp        0      0 0.0.0.0:33011               0.0.0.0:*                   LISTEN      2293/rpc.statd      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      2566/sshd           
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2365/cupsd          
tcp        0      0 127.0.0.1:6010              0.0.0.0:*                   LISTEN      3172/sshd           
tcp        0     52 192.168.93.134:22           192.168.93.1:49559          ESTABLISHED 3172/sshd           
tcp        0      0 :::58724                    :::*                        LISTEN      2293/rpc.statd      
tcp        0      0 :::3306                     :::*                        LISTEN      2804/mysqld         
tcp        0      0 :::111                      :::*                        LISTEN      2271/rpcbind        
tcp        0      0 :::22                       :::*                        LISTEN      2566/sshd           
tcp        0      0 ::1:631                     :::*                        LISTEN      2365/cupsd          
tcp        0      0 ::1:6010                    :::*                        LISTEN      3172/sshd           
udp        0      0 127.0.0.1:778               0.0.0.0:*                               2293/rpc.statd      
udp        0      0 0.0.0.0:750                 0.0.0.0:*                               2271/rpcbind        
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               2271/rpcbind        
udp        0      0 0.0.0.0:49137               0.0.0.0:*                               2293/rpc.statd      
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               2365/cupsd          
udp        0      0 :::750                      :::*                                    2271/rpcbind        
udp        0      0 :::111                      :::*                                    2271/rpcbind        
udp        0      0 :::37881                    :::*                                    2293/rpc.statd 

 

rpm和yum

rpm 包的管理一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有.RPM 扩展名的文件。RPM RedHat Package Manager RedHat 软件包管理工具)的缩写,类似 windows 的 setup.exe ,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。 Linux 的分发版本都有采用( suse,redhat, centos 等等)
 
软件包分类:
源码包
源码包一般是后缀名为.tar.gz的包,需要依赖gcc编译,一般是c语言编写
[root@localhost ~]# vim hello.c
#include 
int main (void)
{
 printf ("hello world\n");
}
[root@localhost ~]# gcc -c hello.c
#-c 生成“.o”头文件。这里会生成 hello.o 头文件,但是不会生成执行文件
[root@localhost ~]# gcc -o hello hello.o
#-o 生成执行文件,并制定执行文件名。这里生成的 hello 就是可执行文件
[root@localhost ~]# ./hello 
hello world #执行 hello 文件
源码包的优点是:
开源,如果有足够的能力,可以修改源代码
可以自由选择所需的功能
软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
卸载方便
源码包有缺点吗?
安装过程步骤较多,尤其安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写
错误
编译过程时间较长,安装比二进制安装时间长
因为是编译安装,安装过程中一旦报错新手很难解决
二进制包
RPM 包:是由 Red Hat 公司所开发的包管理系统。功能强大,安装、升级、查询和卸载
都非常简单和方便。目前很多 Linux 都在使用这种包管理方式
RPM 包的优点:
包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
安装速度比源码包安装快的多
RPM 包的缺点:
经过编译,不再可以看到源代码
功能选择不如源码包灵活
依赖性。有时我们会发现需要安装软件包 a 时需要先安装 b 和 c,而安装 b 时需要安装
d 和 e。这是需要先安装 d 和 e,再安装 b 和 c,最后才能安装 a 包。比如说,我买了个
漂亮的灯具,打算安装到我们家客厅,可是在安装灯具之前我们家客厅总要有顶棚吧,
顶棚总要是做好了防水和刷好油漆了吧,这个装修和安装软件其实类似总要有一定的顺
序的。可是有时依赖性会非常繁琐
1)树形依赖
a---->b---->c
2)环形依赖
a---->b---->c---->a    三个包一起安装
3)函数库依赖
错误:依赖检测失败:
libodbc.so.2()(64bit) 被 mysql-connector-odbc-5.2.5-7.el7.x86_64 需要
libodbcinst.so.2()(64bit) 被 mysql-connector-odbc-5.2.5-7.el7.x86_64 需要
发现报错,需要安装“libodbc.so.2”函数库文件,这时会发现在光盘中根本找不到这个文件。那是
因为函数库没有单独成包,是包含在某一个软件包中的。而如果要知道在哪个软件包中,需要查询网站
www.rpmfind.net
 
 
默认安装位置
RPM 包默认安装路径
/etc/
配置文件安装目录
/usr/bin/
可执行的命令安装目录
/usr/lib/
程序所使用的函数库保存位置
/usr/share/doc/
基本的软件使用手册保存位置
/usr/share/man/
帮助文件保存位置
 
 
 

rpm 包的简单查询指令:

查询已安装的 rpm 列表 rpm qa | grep xx

请查询看一下,当前的 Linux 有没有安装 firefox .
[root@localhost opt]# rpm -qa | grep firefox
firefox-68.4.1-1.el6.centos.i686
firefox是软件名
68.4.1-1是版本
el6.centos.i686说明该软件适用于centos6.X的32位系统,i686,i386都是32位系统,86_64代表64位系统,noarch代表通用
 

 

rpm 包的其它查询指令:

rpm -qa :查询所安装的所有 rpm 软件包,rpm -qa | more [分页显示]

rpm -q 软件包名 :查询软件包是否安装

[root@localhost opt]# rpm -q firefox
firefox-68.4.1-1.el6.centos.i686

[root@localhost opt]# rpm -q mysql
package mysql is not installed

rpm -qi 软件包名 :查询软件包信息

[root@localhost opt]# rpm -qi firefox
Name        : firefox                      Relocations: (not relocatable)
Version     : 68.4.1                            Vendor: CentOS
Release     : 1.el6.centos                  Build Date: 2020年01月14日 星期二 09时21分50秒
Install Date: 2020年02月18日 星期二 23时10分07秒      Build Host: x86-01.bsys.centos.org
Group       : Unspecified                   Source RPM: firefox-68.4.1-1.el6.centos.src.rpm
Size        : 318467560                        License: MPLv1.1 or GPLv2+ or LGPLv2+
Signature   : RSA/SHA1, 2020年01月15日 星期三 00时17分51秒, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem
URL         : https://www.mozilla.org/firefox/
Summary     : Mozilla Firefox Web browser
Description :
Mozilla Firefox is an open-source web browser, designed for standards
compliance, performance and portability.
 

rpm -ql 软件包名 :查询软件包中的文件

[root@localhost opt]# rpm -ql firefox | more
/etc/firefox
/etc/firefox/pref
/usr/bin/firefox
/usr/lib/firefox
/usr/lib/firefox/LICENSE
/usr/lib/firefox/application.ini
/usr/lib/firefox/browser/blocklist.xml
/usr/lib/firefox/browser/chrome
/usr/lib/firefox/browser/chrome.manifest
/usr/lib/firefox/browser/chrome/icons
/usr/lib/firefox/browser/chrome/icons/default
/usr/lib/firefox/browser/chrome/icons/default/default128.png
/usr/lib/firefox/browser/chrome/icons/default/default16.png
/usr/lib/firefox/browser/chrome/icons/default/default32.png
/usr/lib/firefox/browser/chrome/icons/default/default48.png
/usr/lib/firefox/browser/chrome/icons/default/default64.png
/usr/lib/firefox/browser/defaults/preferences
/usr/lib/firefox/browser/features/[email protected]
/usr/lib/firefox/browser/features/[email protected]
/usr/lib/firefox/browser/features/[email protected]
/usr/lib/firefox/browser/features/[email protected]
/usr/lib/firefox/browser/features/[email protected]
/usr/lib/firefox/browser/omni.ja
/usr/lib/firefox/bundled/bin
/usr/lib/firefox/bundled/bin/fc-cache
/usr/lib/firefox/bundled/bin/gdk-pixbuf-query-loaders-32
/usr/lib/firefox/bundled/bin/gdk-pixbuf-thumbnailer
/usr/lib/firefox/bundled/bin/gio-querymodules-32
/usr/lib/firefox/bundled/bin/glib-compile-schemas
 

rpm -qf 文件全路径名 查询文件所属的软件包

[root@localhost opt]# rpm -qf /etc/passwd
setup-2.8.14-20.el6_4.1.noarch
 
[root@localhost opt]# rpm -qf /root/install.log
file /root/install.log is not owned by any package
 

rpm -qR 查询软件包依赖的包 

卸载 rpm

 

rpm -e RPM 包的名称

rpm -e mysql

如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。 如: $ rpm -e foo
removing these packages would break dependencies:foo is needed by bar-1.0-1
  如果我们就是要删除 foo 这个 rpm 包,可以增加参数 --nodeps , 就可以强制删除,但是一般 不推荐这样做,因为依赖于该软件包的程序可能无法运行
$ rpm -e --nodeps foo
带上 --nodeps 就是强制删除。
 
--nodeps 不检测依赖性安装。软件时会检测依赖性,确定所需的底层软件是否安装。
如果没有安装则会报错。如果我不管依赖性,想强行安装,可以使用这个选项。注意:
这样不检测依赖性安装的软件基本是不能使用的,所以不建议这样做
--replacefiles 替换文件安装。如果安装软件包,可是包中部分文件已经存在,那么
正常安装时候,会报错“某个文件已经存在”从而导致软件无法安装,使用这个选项可
以忽视这个报错,而覆盖安装
--replacepkgs 替换软件包安装。如果软件包已经安装,此选项可以把软件包重复安
装一遍。
--force 强制安装。不管是否已经安装,都重新安装。就是—replacefiles 和
—replacepkgs 的综合。
--test 测试安装。不会实际安装,只是检测一下依赖性。
--prefix 指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。注意:
如果指定了安装路径,软件没有安装到系统默认路径中的话,系统会找不到这些安装的
软件,需要进行手工配置才能被系统识别。所以 rpm 包我们一般都采用默认路径安装。
 

安装 rpm

rpm -ivh RPM 包全路径名称,i=install 安 装 ,v=verbose 提 示 ,h=hash 进度条

[root@localhost opt]# rpm -ivh /opt/firefox-38.0.1-1.el6.centos.i686.rpm 
Preparing...                ########################################### [100%]
   1:firefox                ########################################### [100%]
 

 rpm 包校验

rpm –V 已安装的包名

[root@localhost ~]# rpm -V httpd
S.5....T. c /etc/httpd/conf/httpd.conf
验证内容 文件类型 文件名

 

出现了提示信息,我们来解释下最前面共有 8 个信息内容,是表示验证内容的。文件名前面的 c
是表示这是个配置文件(configuration)。最后是文件名。那么验证内容中的 8 个信息的具体内容
如下:
S 文件大小是否改变
M 文件的类型或文件的权限(rwx)是否被改变
5 文件 MD5 校验和是否改变(可以看成文件内容是否改变)
D 设备的主从代码是否改变
L 文件路径是否改变
U 文件的属主(所有者)是否改变
G 文件的属组是否改变
T 文件的修改时间是否改变
apache 配置文件的文件类型是 c,那么还有哪些文件类型呢?
c 配置文件(config file)
d 普通文档(documentation)
g “鬼”文件(ghost file),很少见,就是该文件不应该被这个 RPM 包包
l 授权文件(license file)
r 描述文件(read me)

 

数字证书

刚刚的校验方法只能对已经安装的 RPM 包中的文件进行校验,但是如果 RPM 包本身就被动过手脚,
那么校验就不能解决问题了。我们就必须使用数字证书验证了。
数字证书有如下特点:
首先必须找到原厂的公钥文件,然后进行安装
再安装 RPM 包是,会去提取 RPM 包中的证书信息,然后和本机安装的原厂证书进行验证
如果验证通过,则允许安装;如果验证不通过,则不允许安装并警告
数字证书位置
[root@yangdong dev]# cd /etc/pki/rpm-gpg/
[root@yangdong rpm-gpg]# ls
RPM-GPG-KEY-CentOS-7        RPM-GPG-KEY-CentOS-Testing-7
RPM-GPG-KEY-CentOS-Debug-7  RPM-GPG-KEY-EPEL-7

[root@yangdong rpm-gpg]# ll RPM-GPG-KEY-CentOS-7
-rw-r--r--. 1 root root 1690 9月   5 2019 RPM-GPG-KEY-CentOS-7

 数字证书导入

[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
选项:
--import 导入数字证书

数字证书查询

[root@yangdong dev]# rpm -qa | grep gpg-pubkey
gpg-pubkey-621e9f35-58adea78
gpg-pubkey-f4a80eb5-53a7ff4b

 

yum是rpm包的在线安装方式

yum 是一个 Shell 端软件包管理器 。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自 动处理依赖关系 ,并且一次安装所有依赖的软件包。使用 yum 的前提是可以 联网。
 

yum 的基本指令

查询 yum 服务器是否有需要安装的软件 :yum list | grep xx 软件列表

[root@localhost opt]# yum list | grep firefox
firefox.i686                               38.0.1-1.el6.centos         @anaconda-CentOS-201508042139.i386/6.7
firefox.i686                               68.4.1-1.el6.centos         updates  

 

[root@localhost opt]# yum list firefox
已加载插件:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.njupt.edu.cn
 * extras: mirrors.njupt.edu.cn
 * updates: mirrors.163.com
已安装的软件包
firefox.i686                 38.0.1-1.el6.centos                 @anaconda-CentOS-201508042139.i386/6.7
可安装的软件包
firefox.i686                 68.4.1-1.el6.centos                 updates                               
[root@localhost opt]# yum list | grep firefox
firefox.i686                               38.0.1-1.el6.centos         @anaconda-CentOS-201508042139.i386/6.7
firefox.i686                               68.4.1-1.el6.centos         updates  
 

yum search ifconfig 、yum search all ifconfig搜索服务器上所有与关键字有关的包

[root@yangdong ~]# yum search all ifconfig
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
========================================================================================================================= 匹配:ifconfig =========================================================================================================================
python36-ifcfg.noarch : Python cross-platform network interface discovery (ifconfig/ipconfig/ip)
moreutils.x86_64 : Additional unix utilities
net-tools.x86_64 : Basic networking tools
python2-psutil.x86_64 : A process and system utilities module for Python
python34-psutil.x86_64 : A process and system utilities module for Python
python36-psutil.x86_64 : A process and system utilities module for Python

 

 

安装指定的 yum 包 :yum install xxx 下载安装

yum -y install 自动回答yes

[root@localhost opt]# yum install firefox
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Loading mirror speeds from cached hostfile
 * base: mirrors.njupt.edu.cn
 * extras: mirrors.163.com
 * updates: mirrors.163.com
解决依赖关系
--> 执行事务检查
---> Package firefox.i686 0:68.4.1-1.el6.centos will be 安装
--> 完成依赖关系计算

依赖关系解决

=======================================================================================================
 软件包               架构              版本                                仓库                  大小
=======================================================================================================
正在安装:
 firefox              i686              68.4.1-1.el6.centos                 updates              118 M

事务概要
=======================================================================================================
Install       1 Package(s)

总下载量:118 M
Installed size: 304 M
确定吗?[y/N]:y
下载软件包:
firefox-68.4.1-1.el6.centos.i686.rpm                                            | 118 MB     02:38     
运行 rpm_check_debug 
执行事务测试
事务测试成功
执行事务
Warning: RPMDB altered outside of yum.
** Found 3 pre-existing rpmdb problem(s), 'yum check' output follows:
2:postfix-2.6.6-6.el6_5.i686 has missing requires of libmysqlclient.so.16
2:postfix-2.6.6-6.el6_5.i686 has missing requires of libmysqlclient.so.16(libmysqlclient_16)
2:postfix-2.6.6-6.el6_5.i686 has missing requires of mysql-libs
  正在安装   : firefox-68.4.1-1.el6.centos.i686                                                    1/1 
  Verifying  : firefox-68.4.1-1.el6.centos.i686                                                    1/1 

已安装:
  firefox.i686 0:68.4.1-1.el6.centos                                                                   

完毕!
 

 

yum remove 包名   卸载
 
再次强调一下,除非你确定卸载的软件的依赖包不会对系统产生影响,否则不要执行 yum 的卸载,
因为很有可能在卸载软件包的同时卸载的依赖包也是重要的系统文件,这就有可能导致系统崩溃。卸
载命令如下:
[root@localhost yum.repos.d]# yum remove 包名
#卸载指定的软件包
例如:
[root@localhost yum.repos.d]# yum remove samba
#卸载 samba 软件包
 

yum组管理命令

查询可以安装的软件组

yum grouplist

[root@yangdong ~]#  yum grouplist
已加载插件:fastestmirror, langpacks
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
可用的环境分组:
   最小安装
   基础设施服务器
   计算节点
   文件及打印服务器
   Cinnamon 桌面环境
   MATE 桌面环境
   基本网页服务器
   虚拟化主机
   带 GUI 的服务器
   GNOME 桌面
   KDE Plasma Workspaces
   开发及生成工作站
可用组:
   Cinnamon
   Fedora Packager
   Haskell
   LXQt 桌面环境
   MATE
   Milkymist
   TurboGears 应用程序构架
   Xfce
   传统 UNIX 兼容性
   兼容性程序库
   图形管理工具
   安全性工具
   开发工具
   控制台互联网工具
   教育软件
   智能卡支持
   电子实验室
   科学记数法支持
   系统管理
   系统管理工具
   通用桌面
完成
查询软件组内包含的软件
yum groupinfo 软件组名
#列出软件组中包含的软件
[root@yangdong ~]# yum groupinfo 最小安装
已加载插件:fastestmirror, langpacks
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com

环境分组:最小安装
环境 ID:minimal
 描述:基本功能。
必备组:
   +core
可选组:
   +debugging
安装软件组
yum groupinfo 软件组名
卸载软件组
yum groupremove 软件组名
 
 

添加yum源

yum 源配置文件保存在/etc/yum.repos.d/目录中,文件的扩展名一定是“*.repo”。也就是说, yum 源配置文件只要扩展名是“*.repo”就会生效。
 

这里推荐使用 EPEL,它是 yum 的一个软件源,里面包含了许多基本源里没有的软件。一些软件如 PHP、Redis、Nginx,必须添加 EPEL 源之后,才能用 yum 来安装。

添加yum源    yum install epel-release

检查yum源  yum repolist 

清除yum缓存 yum clean all

yum会将下载下来的 包文件rpm和头文件header存盘在 本地机器的硬盘 缓存中,

这个将占用 硬盘空间, 可以将这些内容清除掉, 以释放磁盘空间:

添加yum缓存 yum makecache

就是把服务器的包信息下载到本地电脑缓存起来,makecache建立一个缓存,以后用install时就在缓存中搜索,提高了速度。
配合yum -C search xxx使用
不用上网检索就能查找软件信息

检查yum源时可能出现故障Cannot retrieve metalink for repository: epel. Please verify its path and try again这时候需要修改/etc/yum.repos.d/epel.repo,注释掉mirrorlist,使用baseurl,然后再 yum repolist

[root@bogon ~]# vim /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1


epel.repo 文件中有 3 个 yum 源容器,这里只列出了 base 容器,其他容器和 base 容
器类似。我们解释一下 base 这个容器。

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel]:容器名称,一定要放在[]中。
name:容器说明,可以自己随便写。
mirrorlist:镜像站点,这个可以注释掉。
baseurl:我们的 yum 源服务器的地址。默认是 CentOS 官方的 yum 源服务器,是可以使用的。
如果你觉得慢,则可以改成你喜欢的 yum 源地址。
enabled:此容器是否生效,如果不写或写成 enabled=1 则表示此容器生效,写成 enabled=0
则表示此容器不生效。
gpgcheck:如果为 1 则表示 RPM 的数字证书生效;如果为 0 则表示 RPM 的数字证书不生效。
gpgkey:数字证书的公钥文件保存位置。不用修改。
 
baseurl,mirrorlist两个只能选择一个

源码包

(源码包没有安装数据库,没有删除命令)

 

安装过程
我们来解释一下源码包安装的具体步骤。
1 )下载软件包。
2 )解压缩。
3 )进入解压目录。
4 ./configure
编译前准备
这一步主要有三个作用:
① 在安装之前需要检测系统环境是否符合安装要求。
② 定义需要的功能选项。“ ./configure ”支持的功能选项较多,可以执行“ ./configure --help
命令查询其支持的功能。一般都会通过“ ./configure --prefix= 安装路径”来指定安装路径。
③ 把系统环境的检测结果和定义好的功能选项写入 Makefile 文件,后续的编译和安装需要依
赖这个文件的内容。
需要注意的是, configure 不是系统命令,而是源码包软件自带的一个脚本程序,所以必须采用
./configure ”方式执行(“ ./ ”代表在当前目录下)。
5 make
编译
make 会调用 gcc 编译器,并读取 Makefile 文件中的信息进行系统软件编译。编译的目的就是把
源码程序转变为能被 Linux 识别的可执行文件,这些可执行文件保存在当前目录下。编译过程较为耗
时,需要有足够的耐心。
6 make clean :清空编译内容(非必需步骤)。
如果在“ ./configure ”或“ make ”编译中报错,那么我们在重新执行命令前一定要记得执行 make
clean 命令,它会清空 Makefile 文件或编译产生的“ .o ”头文件。
7 make install
编译安装
这才是真正的安装过程,一般会写清楚程序的安装位置。如果忘记指定安装目录,则可以把这个
命令的执行过程保存下来,以备将来删除使用。
3. 删除
源码包没有删除命令,如果需要删除,直接删除安装目录即可
 

make命令

 

make 是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。一般情况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。

make是用来编译的,它从Makefile中读取指令,然后编译。

make all:编译程序、库、文档等(等同于make)

make install:安装已经编译好的程序。复制文件树中到文件到指定的位置

make unistall:卸载已经安装的程序。

make clean:删除由make命令产生的文件

make distclean:删除由./configure产生的文件

make check:测试刚刚编译的软件(某些程序可能不支持)

make installcheck:检查安装的库和程序(某些程序可能不支持)

make dist:重新打包成packname-version.tar.gz

 

 

 

linux的目录结构及说明

目录

说明

/

处于Linux系统树形结构的顶端,它是Linux文件系统的入口,所有的目录、文件、设备都在/之下

/bin

Bin是Binary的缩写。常用的二进制命令目录。比如ls、cp、mkdir、cut等;和/usr/bin类似,一些用户级gun工具

/boot

存放系统启动相关的文件,例如:kernel.grub(引导装载程序)

/dev

dev是Device的缩写。设备文件目录,比如声卡、磁盘。在Linux中一切都被看做文件,包括终端设备、磁盘等等

设备文件:/dev/sda,/dev/sda1./dev/tty1,/dev/tty2,/dev/pts/1, /dev/zero,/dev/null,/dev/cdrom

/etc

常用系统或二进制安装包配置文件默认路径和服务器启动命令目录

passwd 用户信息文件

shadow 用户密码文件

group 存储用户组信息

fstab 系统开机自动挂载分区列表

hosts 设定用户自己的IP与主机名对应信息

系统内所有采用默认安装方式(rpm安装)的服务配置文件全部在此目录中,如用户信息,服务启动脚本,常用服务配置文件等

/home

普通用户默认的家目录

root用户的家目录就在/root

/lib

库文件存放目录,函数库目录

/lost+found

只在CentOS6中有

默认为空,被FSCK(file system check用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题, 可利用fsck命令对文件系统进行检查)用来放置零散文件(没有名称的文件)当系统非法关机后,这里就会存放一些文件。

在 centos6 版本下,每个分区的挂载点下会有些目录

/mnt

/media

一般用来临时挂载存储设备的挂载目录,比如cdrom、U盘等目录

/opt

第三方软件保存位置,类似于windows的programfiles,也可以把软件安装在/usr/local中

 

 

/proc

操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如CPU、硬盘分区、内存信息等)存放在这里。/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。因此,这个目录是一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个文件来获取系统信息。也就是说,这个目录的内存不再硬盘上而是在内存里。

查看CPU信息

cat /proc/cpuinfo

/sys

系统目录,存放硬件信息的相关文件

/run

运行目录,存放的是系统运行时的数据,比如进程的PID文件

/srv

服务目录,存放的是我们本地服务的相关文件

/sbin

大多数涉及系统管理的命令都存放在该目录中,它是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,凡是目录sbin中包含的命令都是root权限才能执行的。

/tmp

用于存放临时文件,又是用户运行程序的时候会产生一些临时文件。/tmp就是用来存放临时文件的。/var/tmp目录和该目录的作用是类似的,不能存放重要数据,它的权限比较特殊。

[xf@xuexi ~]$ ls -ld /tmp

drwxrwxrwt. 27 root root 4096 12月 23 19:18 /tmp

t粘滞位(sticky bit)目录的sticky位表示这个目录里的文件只能被owner和root删除

/var

系统运行和软件运行时产生的日志信息,该目录的内容是经常变动的,存放的是一些变化的文件。比如 /var/log目录用来存放系统日志,还有/var/mail、/var/spool/cron

/usr

存放应用程序和文件

/usr/bin 普通用户使用的应用程序

/usr/sbin 管理员使用的应用程序

/usr/lib 库文件Glibc(32位)

/usr/lib64 库文件Glibc

/lib

/lib64

都在/usr/目录下

这个目录里存放着系统最基本的动态链接共享库,白喊许多倍/bin和/sbin中的程序使用的库文件,目录/usr/lib中含有更多用于用户程序的库文件。作用类似于windows里的dll文件,几乎所有的应用程序都需要用到这些共享库

注:lib***.a是静态库

Lib***.so是动态库

静态库在编译时被加载到二进制文件中

动态库在运行时加载到进程的内存空间中

简单的说:这些库视为了让你的程序能过正常编译运行的

/bin/ 存放系统命令的目录,普通用户和超级用户都可以执行。是/usr/bin/目录的软链 接

/sbin/ 存放系统命令的目录,只有超级用户才可以执行。是/usr/sbin/目录的软链接

/usr/bin/ 存放系统命令的目录,普通用户和超级用户都可以执行

/usr/sbin/ 存放系统命令的目录,只有超级用户才可以执行

 

/lib/ 系统调用的函数库保存位置。是/usr/lib/的软链接

/lib64/ 64 位函数库保存位置。是/usr/lib64/的软链接

 

/media/ 挂载目录。系统建议是用来挂载媒体设备的,如软盘和光盘 /misc/ 挂载目录。系统建议用来挂载 NFS 服务的共享目录。我们在刚刚已经解释了挂载, 童鞋们应该知道只要是一个已经建立的空目录就可以作为挂载点。那么系统虽然 准备了三个默认挂载目录/media、/mnt、/misc,但是到底在哪个目录中挂载什么 设备都可以由管理员自己决定。例如接触 Linux 的时候,默认挂载目录只有 /mnt 一个,所以养成了在/mnt 下建立不同目录挂载不同设备的习惯。如 /mnt/cdrom 挂载光盘,/mnt/usb 挂载 U 盘,这都是可以的 /mnt/ 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。现在系统建议这个 目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区

 

/usr/lib/ 应用程序调用的函数库保存位置

/usr/local/ 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置

/usr/share/ 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录

/usr/src/ 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过 超哥更习惯把手工下载的源码包保存到/usr/local/src/目录中,把内核源码保存到 /usr/src/kernels/目录中

/usr/src/kernels/ 内核源码保存位置

 

/var/ 动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件

/var/www/html/ RPM 包安装的 Apache 的网页主目录

/var/lib/ 程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/目录中

/var/log/ 系统日志保存位置

/var/run/ 一些服务和程序运行后,它们的 PID(进程 ID)保存位置。是/run/目录的软链接

/var/spool/ 放置队列数据的目录。就是排队等待其他程序使用的数据,比如邮件队列和打印 队列

/var/spool/mail/ 新收到的邮件队列保存位置。系统新收到的邮件会保存在此目录中

/var/spool/cron/ 系统的定时任务队列保存位置。系统的计划任务会保存在这里

命令格式

[root@localhost ~]# []:这是提示符的分隔符号,没有特殊含义。

 root:显示的是当前的登录用户,超哥现在使用的是 root 用户登录。

 @:分隔符号,没有特殊含义。

localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。

~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。

 #:命令提示符。超级用户是#,普通用户是$

[root@localhost ~]# 命令 [选项] [参数]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下载mysql安装包
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.22-1.el6.i686.rpm-bundle.tar
检查系统有没有mysql数据库
rpm -qa | grep mysql
卸载mysql
rpm -ev 
如果提示权限不够则在命令前方加sudo
sudo暂时把权限提高为root权限
sudo rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.i686
提示user不在sudoer文件中解决方法
切换root用户
su root
创建目录
mkdir /usr/local/src/mysql
切换目录
cd /usr/local/src/mysql
安装包必须在mysql目录下才能解压
安装mysql
tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar
安装server,client,在安装之前先用ls命令查看
rpm -ivh
查询mysql服务运行状态
service mysql status
启动mysql
service mysql start
登录mysql
mysql -uroot -p
忘记mysql密码后可以根据此操作
查看mysql状态
ps -ef |grep -i mysql
关闭服务
service mysql stop
修改mysql的配置文件

create user 'test @'%' indentified by '123456';

ifconfig

service iptables status

service iptables restart

 

 

 

 

 

 

 

你可能感兴趣的:(linux)