LINUX基础命令

命令格式:命令关键字 选项 参数 ls -l /etc (find /etc --name password)帮助命令:man help info

cd 切换目录 cd .. cd-

绝对路径:从根目录 /etc/passwd

相对路径:从当前目录 ./ ../

[root@localhost ~]# root用户名 localhost主机名 ~当前所在目录 #root用户 $普通用户

ls查看目录下内容

选项:-a看隐藏文件(.文件名)

  -l = ll 以长格式显示信息

  -h 以人类可读的方式显示大小

-文件类型 -普通文件 d目录 b块设备文件 c字符设备文件 l链接文件 s套接字文件 p管道文件

文件管理命令:

touch 创建文件或更新时间戳

mkdir 创建目录 -p -v

rm 删除 -f -r(目录)-I

wc  统计 -c -w -l

cp 复制文件 -a -p(保持文件权限) -r

mv 移动或重命名

tree 查看目录树 -L

cat tac nl more  less head -n(看文件前n行) tail  -n(看文件后n行)(-f 排错(持续监控日志文件尾部变化))查看文件内容

which 查找命令绝对路径

find 按条件查找文件

查找系统中以bak结尾的文件并删除

find / -name *bak -exec rm -rf {} ;

whereis -b -m

locate -->updatedb(更新数据库) -->安装mlocat 查找速度比find快

grep 过滤 -i -v取反 -E支持扩展正则表达式()-o只显示要过滤的关键字 -A -B -w

压缩文件

gzip/gunzi=gzip -d -->.gz 1-9

bzip2/bunzip2=bzip2 -d -->.bz2

tar 制作或释放归档文件 -c -v -j(bz2) -z(ge) -f -x -C(解压指定路径)

通配符: ?任意一个字符  *任意所有字符

管道符:| 前一个命令的结果作为后一个命令的执行目标

正则表达式: ^以……开头

  $以……结尾      grep基础正则表达式

  |或                 扩展正则表达式

sbin bin 放命令 boot  启动文件 dev 设备文件 etc 配置文件 home 普通用户家目录 lib lib64 库文件 media 挂载光盘 mnt 挂载可移动设备 proc 虚拟目录(内存里)root 超级用户家目录 run 服务启动目录  usr var 可变长文件

exit 退出登录,注销  ctrl+d

history 查看历史命令记录 调用!!上一条命令 !n 查看第n条命令 -c(.bash_logout)关机清空历史纪录

关机:shutdown -h now, init 0, halt,poweroff

runlevel 查看系统运行级别

重启:shutdown -r now,init 6,reboot

uname 查看系统信息 -a -r(内核版本)

查看centos系统版本cat /etc/redhat-release

Centos6与Centos7区别:内核版本不同6-->2.6  7-->3.10,默认文件系统不同6-->ext4   7-->xfs

Echo 打印 echo $?打印上一条命令的状态码用于检测上一条命令执行是否成功

vim 编辑器<--vi

yum -y install vim

命令模式 -->i a o s      esc<--编辑模式-->:/         esc<-- 末行模式

命令模式:

dd 删除行(剪切 )

D 删除光标后内容

yy 复制

p 粘贴当前光标下一行

x 删除当前光标字符

u 撤销

Ctrl+r 恢复

gg 跳到首行

G 最后一行

w 移动单词

v 可视   x删除 y复制

Ctrl +v可视块

末行模式:

q q! w w! wq wq! x

/ 查找

%s/old/new/g 替换

.vimrc vim的配置文件

编辑模式:补全出现过的单词 ctrl+n/p

软件包管理:

dpkg -->ubuntu  suse  debian          -->apt        apt-get

rpm  -->redhat  centos  fedora        -->yum      yum install

 

rpm 管理rpm包 -i -v -h  -a  -q  -e  --nodeps

yum 自动解决rpm包之间的依赖关系    -y

install

update

remove

list

list installed

Info

clear all

makecache

provides 查看包

源码包(tar包)

解包 tar xf 包名 -C /usr/src

配置 ./configure --prefix=/usr/local/xxx(gcc  gcc-c++)

编译 make

安装 make install

 

date 时间

data -s 修改时间 %s时间戳(19700101)

date +%Y%m%d 显示年月日

bc 计算器

vimdiff diff比较两文件不同

用户管理:

用户分类:超级用户(root)   uid  0

    普通用户                    uid  1000

    程序用户                    uid  1-999

Userdel 删除用户 -r 删除家目录

useradd -u指定uid -g指定gid -d指定家目录位置-M指定不创建家目录 -G指定附加组

passwd -l -u

echo "123123" |passwd --stdin ***

usermod -c -d -g -L -U -e -G修改用户信息

chage 修改密码信息 -d 0

croupadd 添加用户组 -g

chgrp

chsh 或usermod更改用户的shell

who  whoami  id groups w

last  lastlog

用户切换和授权

su   -   改变环境变量   -

sudo  授权

visudo(自动检测是否出错)   =vim /etc/sudoers

用户组授权前加%

文件权限:

chmod  u/g/o/a  +/-/=rwx filename 修改文件权限

-0   r4   w2     x1

chown   修改文件归属   属主   属组

umask   查看或修改mask值

特殊权限位: SUID  SGID  SBIT

ACL 访问控制列表

getfacl  查看acl控制列表

setfacl   -m  u:***:rwx   ***

          -x             最后删除mask值

          -b             还原RCL列表

特殊文件权限:

chattr           +、- 修改

lsattr           查看

i    不能修改                        passwd     shadow

a   只能追加,不能修改       日志

只能root设置、修改

 

 

 

磁盘管理:

SATA   SAS   -->sd           

磁盘逻辑结构:柱面、磁道、扇区(512字节)

MBR  主引导记录   位于磁盘的第一个扇区

dd if=/dev/sda of=/etc/mbr.bak bs=512 count=1

512:4*16=64     446引导记录(grub)    2校验字节

fdisk    划分磁盘分区  -l    查看

mkfs     创建文件系统 -b  -I

mount    挂载

umount   卸载

df   -Th  查看挂载

du -sh 查看磁盘大小

inode              记录文件原信息(硬链接inode相同,软链接inode不同类               似于快捷方式;删除原文件,对硬链接无影响,软链接不可以;目录不可以做硬链接,可以做软链接;硬链接不可跨文件系统,软链接可以;硬链接ln,软链接ln -s)

block              记录文件内容(默认1k,2k,4k)

superblock      记录系统inode信息

dumpe2fs 

/etc/fstab   开机自动挂载

blkid   查看硬盘UUID

nmcli con show  查看网卡UUID

Partprobe partx  同步分区表

Parted  超过2T

GTP    2T

swap 交换分区(一般为内存2倍)

mkswap

swapon 激活交换分区  -s 查看现有交换分区

swapoff 关闭交换分区

uptime 查看系统负载

free -m 查看内存使用情况

启动流程:

1、BIOS加电自检

2、MBR引导

3、GRUB引导

4、加载kernel(内核)

5、启动init(centos 6)--->system(centos 7)

系统非正常关机下存放的碎片文件

修改密码:

Centos6 :e2e 空格1 回车再按b passwd reboot

Centos7 重启系统,按任意键中断启动加载器的倒计时;按e选定编辑条目,将光标移动到内核命令行(以linxu16开头的行)在行尾添加rd.break;按ctrl+x

使用这些更改启动,然后重新挂载mount – o remount,rw /sysroot;chroot /sysroot,然后修改密码;如果开启selinux,touch /.autorelabel;执行两次exit

 

RAID:磁盘冗余阵列

RAID0:条带模式,读写速度快,磁盘利用率高;没有数据冗余

RAID1:镜像模式,数据完全冗余,读速度快;磁盘利用率低    2*n     50%

RAID5:磁盘利用率想对较高,有数据冗余,允许一块硬盘损坏;写速度慢   3   n-1/n

RAID5+1:热备盘

RAID10:先做RAID1,再做RAID0

RAID6:两块校验盘

mdadm -C 创建新的RAID -l设置RAID级别 -n -x

LVM:逻辑卷,动态管理磁盘

lvextend 扩容后:

ext4   -->resize2fs

xfs    -->xfs-growfs

 

计划任务管理:

一次性计划任务at  --->atd

Systemctl start std

周期性计划任务crond(分,时,日,月,周)

Systemctl start crond

Crontab -e

Crontab -l

Crontab -r

命令绝对路径

最小单位:分

$()或’’先执行

进程管理:

程序:静态

进程:动态  -->PID(进程号) PPID(父进程号)

top 动态查看进程信息

cat /proc/cpuinfo |grep core查看内核

ps -aux  -ef

kill 杀死PID进程 -9强制杀

killall 根据进程名杀

pkill 根据特殊条件杀

pgrep 根据特点条件查pid

pstree 进程树

nice

renice

优先级 -20 20 只有root可以设定负的优先级

&后台

jobs 查看后台任务

fg 1 调到前台

ctrl+z停止

bg 1在后台继续运行

 

sort排序

-n 按数字进行排序

-r 倒序

-k

 

time 统计命令执行时间

网络管理命令:

ip addr、ifconfig查看网卡信息IP地址

route

hostname 查看或修改主机名(7:/etc/hostname 6:/etc/sysconfig/network)

bash 打开新的shell

nmap 端口扫描

常见服务的端口号:

ftp 20/21 ssh 22 telnet 23 smtp 25 dns 53  dhcp 67/68 tftp 69 http 80 pop3 110 nfs(rpc) 111 ntp 123 imap 143 https 443 rsync 873 mysql 3306

redis 6379

 

 

ftp 文件传输协议:

20:数据

21:控制

连接方式:

主动连接

被动连接

传输模式:

文本模式

二进制模式

用户:

匿名用户:ftp anonymous

本地用户:Linux系统中

 

DNS域名解析协议

tcp   53 主从服务器数据同步

udp   53 域名解析

完整域名 www.baidu.com

. 根域

.com *域   .cn  .com   .org   .edu

.baidu 二级域

www   主机头

 

hosts  早期用来做域名与IP映射

DNS查询方式:

递归:C-S

迭代:S-S

DNS解析:

正向解析

反向解析:反垃圾邮件

知名DNS服务器:

114.114.114.114

8.8.8.8

Linux:

bind

named

/etc/named.conf

/var/named/

hosts文件优先级高于DNS

命令(bind-utils):

host

nslookup

dig

解析记录:

SOA授权域

NS管理这个域—>DNS服务器自己的域名

MX邮件交换记录

A域名映射IP

CNAME别名

*泛解析

PTR反向解析记录

 

域名服务器分类

主域名服务器

从域名服务器

缓存域名服务器

 

CDN内容分发网络

缓存

流程:

1.  客户端发送域名解析请求到本地DNS服务器;

2.  本地DNS服务器将请求转发给CDN DNS 服务器;

3.  CDN DNS解析后将服务器地址返回给客户端;

 

 

Shell 脚本

面向过程     动态语言   解释型     弱类型

变量

规则:只能以字母和下划线开头,包括字母、数字、下划线。区分大小写

规范:1、变量名要有意义

       2、采用驼峰式命名 SameName sam_name

定义变量

变量名=变量值

调用变量

$变量名

打印变量值:

echo $变量名

printf $变量名

printf “$a ”

删除变量:

unset  变量名

declare -i 变量名 声明该变量为整数型 +i取消声明

declare -r变量名 声明只读变量

环境变量(全局变量)

env  查看系统环境变量

/etc/profile-->/etc/profile.d/*.sh

~/.bash_profile -->~/.bashrc-->/etc/bashrc

export 变量名 将该变量导出为全局变量

自定义变量(局部变量)

预定义变量  

$0    保存脚本的路径和名称

$1 $2 $3 … 位置变量,不交互传参

$*    保留传入的所有参数(整体)

$@    保留传入的所有参数(单个)

$#    传入参数的个数

$$    保存脚本的pid

$?   保存上一条命令执行状态码

#!    幻数-->指定解释器

注释

执行代码

执行脚本方式:

1、bash或sh脚本名执行,在子shell中执行结束后退回到父shell

2、相对路径或绝对路径执行,必须有执行权限chomd +x

3、Source或.执行,在当前shell下执行

符号:

单引号,原样输出

双引号,解析变量

赋值时,如果有空格,就用引号引起来

$()或``先执行括号中命令,拿到命令结果

shell计算:

$(())整数计算,判断

let 整数计算

expr 整数计算 *(乘号要转义)字符与字母要报错

bc

$[]

条件测试

[ 条件 ] 或 test 条件测试

文件测试:

-f 是否是文件

-d 是否是目录

-e 文件或目录是否存在

-s 是否是一个空文件 非空为真

整数测试:

-eq 等于

-ne 不等于

-gt 大于

-lt 小于

-le 小于等于

-ge 大于等于

字符串测试:

== 字符串相等

=

-z 测试是否为空字符串 非空为假

逻辑运算符:[[ ]]

&& 或 -a  与

|| 或 -o  或

       非

case 变量 in

条件1)

     执行代码

;;

条件2)

     执行代码

;;

for i in `seq 100` ;do

        if [ $((i%2)) -eq 0 ];then

                sum=$((i+sum))

        fi

done   

echo $sum

获取字符串长度:

echo $name|wc -L

echo ${#name}

echo length $name

字符串截取:

echo ${name:起始位置:个数}

echo $name|cut -c 起始字符数-结束字符数

字符替换:

abcABC123ABCabc

echo ${name#a*C}    123aABCabc

echo ${name##a*C}   abc

echo ${name%a*C}    abcABC123ABCabc

echo ${name%A*c}    abcABC123

echo ${name%%A*c}   abc

echo ${name/abc/456}456ABC123ABCabc

echo ${name//abc/456}456ABC123ABC456

正则表达式:

基础正则表达式:grep egrep sed awk

.匹配任意一个字符

*匹配前一个字符或表达式任意次

^匹配以…开头

$匹配以…结尾

[]匹配括号中任意字符 [^0-9] 取反 [a-z]

{n,}匹配前一个字符或表达式最少n次

{,m}匹配前一个字符或表达式最多m次

{n,m}匹配前一个字符或表达式n到m次

扩展正则表达式:egrep = grep -E awk sed -r

+匹配前一个字符或表达式1次或1次以上

?匹配前一个字符或表达式0次或1次

()分组

|或

sed流编辑器

sed 选项‘操作 地址’文件

-r 支持扩展正则表达式

-i 修改文件

-n 安静模式,只输入处理的行

 

i 插入一行

a 追加

d 删除

c 整行替换

s 字符串替换

p 打印

 

echo http://www.baidu.com/1.mp3|sed -nr ‘s#(.*)//(.*)/(.*)#2#gp’

ip a show eno16777736|sed -n "3p"|sed -nr 's#(.*) (.*)/(.*)#2#p'

 

awk

默认分隔符为空格  -F指定

内置变量

NF处理的列数 $1代表第一段 $0整行

NR处理的行数

cut 切割

-c切割字符

-b按字节切割

-d指定分割符

-f指定段数

uniq 去重(相邻)

-c 统计重复出现的行

查看系统中命令使用最多的

history |awk '{print $2}' |sort |uniq -c |sort -nr |head

 

ping

-c 指定发送数据包

-w 发包的时间间隔

-i 等待多上时间认为发送失败

脚本:

1、统计192.168.2.0/24内有多少主机存活?

2、批量创建10个用户,可以为这些用户设置统一的默认密码;强制用户首次登陆修改密码;

3、统计当前内存使用情况,如果内存使用率超过80%,打印报警

awk ‘{print $1}’ /etc/httpd/logs/access_log |sort|uniq -c|sort -nr

awk ‘{array[$1]++} END{for (i in array) print i,array[i]}’ /etc/httpd/logs/access_log

YoLa.2575+

数组:

array=(a b c d)

echo ${array[0]} a

unset array[]

echo ${array[*]:1:2}

echo ${array[*]/a/b}

web 2.0

http 1.1 80  https 443

静态网站:没有交互,没有程序,没有MySQL

1、每个页面有一个特定的URL地址,不含?或&等特殊符号

2、每个网页都是独立的实体文件

3、内容是固定不变的,容易被搜索引擎收录(优点)

4、网页没有数据库支持,在制作和维护方面工作量较大,当网站数据量比较大时,

5、交互性差,

动态网站:交互的,有程序(php,java,python,perl)

http状态码    200

               301

               401

403

404

500

502

LAMP Linux Apache(7 2.4  6 2.2) MySQL/Mariadb php/python/perl

虚拟主机:

基于IP

基于域名

基于端口

IO

< 标准输入           0

> 标准输出(覆盖)   1

>> 标准输出(追加)

2>标准错误           2

2>>

&>混合输出