美文网首页
linux基础

linux基础

作者: vincent浩哥 | 来源:发表于2019-10-18 20:24 被阅读0次

linux介绍

Linux 是一个免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 性能稳定的网络操作系统

linux的内核最初是由一个芬兰的大学生因为个人兴趣爱好而编写的,这个大学生的名字叫林纳斯·托瓦兹(Linus Torvalds)

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。其中这个CentOS是一个企业级的发行版,特别适合对稳定性,可靠性和功能要求较高用户

vmware虚拟机下安装linux(window 7)

vmware虚拟机的三种网络模式

1、VMnet0 虚拟交换机 :Bridged桥接模式
特点:
1)、默认使用VMnet0,不提供DHCP服务(DHCP服务是指由服务器控制的一段IP地址范围,当客户机登录服务器时会自动获取服务器分配的IP地址与子网掩码)
2)、虚拟机与外部主机需要在同一个网段上,与局域网的其它机器没有区别。
3)、可以与局域网内其它主机通信,可以与外部网络通信
4)、容易与局域网其他主机引起ip地址冲突

2、VMnet1 虚拟交换机 :Host-Only仅主机模式
特点:
1)、默认使用VMnet1,提供DHCP服务
2)、虚拟机可以和物理主机互相访问,但虚拟机无法访问外部网络

3、VMnet8 虚拟交换机 :NAT模式
特点:
1)、默认使用VMnet8,提供DHCP服务
2)、虚拟机可以和物理主机互相访问,可访问外部网络
3)、局域网内其它机器访问不了

CentOS7的网络设置

  • Bridged桥接模式
    重启主机的命令:reboot
    重启网卡的命令:systemctl restart network.service
    查看ip地址的命令:ip addr
    ping命令可以检测网络是否畅通:ping ip地址
    结束ping命令:ctrl + c
    安装ctrl +l 可以清屏
    可以访问外网
    容易与局域网的其它机器ip地址冲突

  • Host-Only仅主机模式
    一般情况下不能访问外网
    不会与局域网的其它机器ip地址冲突

  • NAT模式
    可以访问外网
    不会与局域网的其它机器ip地址冲突

  • 总结
    为了提供不同的测试环境,有的需要虚拟机与局域网内的其它机器环境隔离,有的不需要,所以出现多种配置方式去适应不同的场景

centos7 常用命令

cd命令
功能说明:切换目录。
举 例:cd /usr/local/;cd ..;cd -

ls命令
功能说明:列出目录内容。
举 例:ls -ltr ;ls -lrt /home/

pwd命令
功能说明:查询所在目录。
举 例: pwd

cat命令
功能说明:查看小文件内容。
举 例:cat -n 123.txt

more命令
功能说明:查看大文件内容
举 例:more System.map-3.10.0-123.el7.x86_64

head命令
功能说明:查看文件的前面N行。
举 例:head -20 System.map-3.10.0-123.el7.x86_64

tail命令
功能说明:查看文件的后面N行。
举 例:tail -f access.log ;tail -20 access.log

touch命令
功能说明:创建一个空文件。
举 例:touch 123.txt

mkdir命令
功能说明:创建目录。
举 例:mkdir -p /tmp/XD/XD/class

rmdir命令
功能说明:删除目录。
举 例:rmdir /tmp/XD/XD/class

cp命令
功能说明:拷贝文件。
举 例:cp 123.txt class/ ; cp -a 123.txt class/789.txt

mv命令
功能说明:**移动或更名现有的文件或目录**。
举 例:mv 123.txt 345.php ;mv 789.txt /home/987.php

rm命令
功能说明:**删除文件或目录**。
举 例:rm 987.php ;rm -rf 456.txt

diff命令
功能说明:对比文件差异。
举 例:diff 123.txt 456.txt

ssh命令
功能说明:**远程安全登录方式。**
举 例:ssh 192.168.226.131

exit命令
功能说明:退出命令。

id命令
功能说明:查看用户。
举 例:id root

uname命令
功能说明:查询主机信息。
举 例:uname -a

ping命令
功能说明:查看网络是否通。
举 例:ping 192.168.226.131

echo命令
功能说明:标准输出命令。
举 例:echo "this is echo 命令"

man命令(ls --help)
功能说明:查看帮助文档
举 例:man ls

help命令
功能说明:查看内部命令帮助
举 例:help if

查看linux的版本
cat /proc/version
cat /etc/issue
cat /etc/redhat-release

centos7 基础命令

clear命令
功能说明:清屏。
举 例:clear ; ctrl + l

who 命令
功能说明:当前在本地系统上的所有用户的信息
举 例:whoami ; who

uptime 命令
功能说明:查询系统信息
举 例:
load average: 0.00, 0.01, 0.05 1分钟的负载,5分钟的负载,15分钟的负载

w 命令
功能说明:查询系统信息
举 例:w

free 命令
功能说明:查看系统内存
举 例:free -h ; free -m

wc 命令
功能说明:统计行。
举 例:wc -l 123.txt

grep命令
功能说明:查找文件里符合条件的字符串。
举 例:
grep '119.4.253.206' 123.txt | wc -l
-n:输出行数 grep -n '80.82.70.187' 123.txt
-w:精确匹配 grep -w '113.66.107.198' 123.txt
-i:忽略大小写 grep -i 'IP:113.66.107.198' 123.txt
-v:反向选择 grep -v '113.66.107.198' 123.txt

find命令
功能说明:查询文件。
举 例:find / -name -type f 123.txt

uniq命令
功能说明:对排序好的内容进行统计
举 例:uniq -c 123.txt | sort -n

sort命令
功能说明:对内容进行排序
举 例:uniq -c 123.txt | sort -n

df命令
功能说明:文件系统的磁盘使用情况统计。
举 例:df -h

netstat
功能说明:查看网络端口的使用情况
举 例:netstat -tunlp | grep nginx
-t :显示tcp端口
-u :显示UDP端口
-n :指明拒绝显示别名
-l :指明listen的
-p :指明显示建立相关连接的程序名

安装netstat命令:yum -y install net-tools


hostname命令
功能说明:查看主机名
举 例:hostname

ps命令
功能说明:显示所有进程信息。 ps 与grep 常用组合用法,查找特定进程
举 例:
ps -ef | grep nginx
ps -aux | grep nginx

kill命令
功能说明:杀进程
举 例: kill -9 top

top命令
功能说明:监控Linux系统状况,比如cpu、内存的使用
举 例:按住键盘q退出

du命令
功能说明:统计大小
举 例:du -sh ; du -sm *

firewall-cmd命令
功能说明:查看防火墙的状态
举 例:firewall-cmd --state

centos 7 关闭/启动防火墙:
systemctl stop/start firewalld.service

19、echo命令
功能说明:判断上一条命令是否正确
举 例:echo $?

20、cal命令
功能说明:查看日历
举 例:cal 2008

输入输出错误重定向介绍

  • 输入重定向定义
    输入重定向就是把要输入的信息写入到指定的文件中去

  • 输出重定向定义
    输出重定向就是把要输出的信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏)

  • 错误重定向定义
    错误重定向就是把错误的信息写入到一个文件中去

  • linux中一切皆文件

posix名称    文件描述符      用途
/dev/stdin         0               标准输入
/dev/stdout       1               标准输出
/dev/stderr        2               标准错误输出
  • 输入重定向用法: <
    eg:wc -l < 123.txt

  • 输出重定向用法:> #代表覆盖写入 ; >> #代表追加写入
    例子:
    cat >> 123.txt ;
    cat > 123.txt ;
    ls -lrt >123.txt ;
    echo '123455' > 123.txt

  • 错误重定向用法
    eg:llll 2 > 123.txt ; llll 2> /dev/null #/dev/null 无底洞

  • 符号的意义:

& #代表等同于的 意思 ls -lrt /boot /test 1>/root/123.txt 2>&1

&> #代表不分正确还是错误的意思 ls -lrt /boot /test &>123.txt

| #管道符

; #代表的是可以执行多条命令 cat /etc/passwd | grep root ; ls -lrt

&& #前面的命令执行成功的话,后面的才可以执行成功;前面的命令执行失败的话,后面的不可以执行

|| #前面的命令执行成功的话,后面的不可以执行;前面的命令执行失败的话,后面的可以执行

CentOS7下常见的目录作用介绍

目录
/:根目录,一般根目录下只存放目录,不要存放文件,也不要修改,或者删除目录下的内容

/mnt:测试目录

/root:root用户的家目录

/home:普通用户的家目录

/tmp:临时目录(比如文件上传时)

/var:存放经常修改的数据,比如程序运行的日志文件

/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件

/etc:系统默认放置配置文件的地方

/bin:所有用户都能执行的程序

/sbin:只有root才能执行的程序

/usr:用户自己的软件都可以放到这儿来

/dev:存放硬件设备的地方(/dev/cdrom)

/media:挂载光盘使用的

挂载光盘:mount /dev/cdrom /media
卸载光盘:umount /dev/cdrom

绝对路径:说白了就是完整的路径

相对路径:相对于当前位置路径   ./ 代表的是当前目录的意思  ../ 代表的是上一级目录的意思

编辑器vi的使用

  • vi的基本概念(3中模式)
命令模式
插入模式
底行模式

进入命令模式:按住键盘的左上角 esc 键
进入插入模式:按住键盘的 i 或者 o 或者 a
进入底行模式:前提是得在命令模式,输入 : 进入

  • 在命令行模式中的操作
$  #移动到这一行的行尾

gg  #移动到文档第一行行首

G   #移动到文档最后一行行首

x   #删除内容,删除一个字符

dd   #删除游标所在的那一整行

u   #复原原来的操作

v   #选中范围按y即复制

p   #粘贴
  • 在底行模式中的操作(:)
n  #n为数字。光标移动到第n 行
/  #寻找内容

eg:
%s/word1/word2/g   #从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2

n1,n2s/word1/word2/g   #n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2

set nu   #显示行号

set nonu  #取消行号

q!  #强制离开不保存

wq  #离开并保存

wq!  #强制离开并保存

!ls  #暂时离开

linux的用户管理和组管理

  • Linux是一个多用户、多任务的操作系统

  • 用户分类:

超级用户root:拥有至高无上的权限 UID:0

普通用户:权限有一定的限制,可以登录系统。
一般可以执行/usr/local/bin或者/bin或者/usr/bin或者自己家目录的命令
UID:500 -60000 (centos 6) UID:1000 - 60000(centos7)

系统用户(伪用户):一般不会登录系统,一般情况是用来维持某个服务程序 UID :1-499 (centos 6) UID :1-1000 (centos 7)

  • 用户的相关配置文件
    账号信息:/etc/passwd
    密码信息:/etc/shadow
test :x     :1000 :1000 :       :/home/test :/bin/bash
用户 密码占位符 UID GID  用户描述  用户家目录  登录后使用的shell解释

/sbin/nologin   #是不可登录的
/bin/bash       #可以登录
  • 添加用户命令: useradd
-u #指定用户UID

-d #指定用户主目录

-g #指定用户所属组

-r #指定用户是系统用户

-s #用户登录shell解释器

-M #不创建主目录

eg:创建一个用户vincent,指定UID为1010,指定家目为/home/vincent ,指定所属组为root组,指定登录shell为/bin/bash

useradd -u 1010 -d /home/vincent -g root -s /bin/bash vincent
  • 登录用户时出现以下问题如何解决
    eg:
    bash-4.2bash-4.2
    解决:复制相关信息到家目录
    cp -r /etc/skel/.bash* /home/vincent/

  • 删除用户命令:userdel
    eg:-r #连同家目录一块删除

  • 添加用户组命令:groupadd

  • 删除用户组命令:groupdel

  • 修改用户的信息命令:usermod
    -u #指定用户UID
    -d #指定用户主目录
    -g #指定用户所属组

  • 设置用户密码命令passwd
    eg:
    passwd XD
    echo "123456" | passwd --stdin XD

centos7 文件属性和权限

  • 文件的属性: ls -lrti
解析:
1183052 -rwxr-xr-x  1 root root  30600 Nov 22  2013 rpm

第一列(i):i节点;i节点可以理解文件id,一个i节点号可以对应多个文件,一个文件只能对应一个i节点号

第二列(-l):文件的类型与权限
- #代表的是文件;d#代表是目录; l #软链接文件 ;b #代表块设备;c #代表的是硬件设备(键盘)

r:表示读权限 ;w:表示写权限;x:表示执行权限
4:表示读权限 ;2:表示写权限;1:表示执行权限

rw-------:分为三列
rw-    第一列为所属者的权限
---     第二列为所属组的权限
---     第三列为其它的权限

第三列:有多少文件名链接到这个节点

第四列:文件的所有者

第五列:文件的所有组

第六列:容量大小,单位默认为B

第八列:创建或最近修改的时间

第九列:文件名
  • 链接
软连接:ln -s
eg:ln -s /home/vincent/yum.log  /usr/local/
i节点号跟源文件不一样,源文件一旦删除,软链接将找不到源文件

硬链接:ln
eg:ln /home/vincent/yum.log  /usr/local/vincent/
i节点与源文件一模一样,源文件删除,硬链接还可以继续使用。常用于防止重要文件被误删
  • 修改文件的权限命令: chmod
-R #递归的意思
chmod -R 777 /home/vincent/*

eg:
chmod u+x,g+w,o+w boot.log
chmod u-x,g-w,o-w boot.log
chmod 777 boot.log
  • 修改文件的所有者和所属组命令:chown
-R #递归的意思

eg:更改文件目录vincent的所属者为root用户 跟 所属组为vincent组
chown -R root:vincent vincent

linux 文件归档和解压缩介绍

  • 文件归档
    文件归档也称之为打包,指的是一个文件或者多个文件或者目录的一个集合,这个集合储存在一个文件中。
    归档文件是没有进行压缩的,所以占用的空间是所有文件或者目录的总和,工作中经常与压缩结合在一起使用。

  • 文件压缩
    节约磁盘空间,加快文件的传输速率

  • 解压缩命令:gzip;xz

gzip:不能压缩目录,只能压缩文件,压缩速度最快,但是压缩比例比较低。扩展名: .gz

不保留源文件压缩:gzip 123.txt

保留源文件压缩:gzip -c 345.txt > 345.txt.gz

不保留源文件的解压:gunzip 123.txt.gz

保留原文件的解压:gunzip -c 345.txt.gz > 234.txt

不保留源文件解压:gzip -d 345.txt.gz

xz:可以压缩目录和文件压缩的速度比较慢,但是压缩比例最高。扩展名: .xz

不保留源文件压缩:xz 123.txt

保留源文件压缩:xz -c 345.txt > 345.txt.xz

不保留源文件的解压:unxz 345.txt.xz

保留原文件的解压:xz -d -k 123.txt.xz

不保留源文件解压:xz -d 123.txt.xz
  • 归档与压缩命令:tar
-c #创建新文件
-f #指定文件格式
-v #显示详细过程
eg:
tar -cf vmware.tar vmware-tools-distrib;
tar -cvf vmware-tools.tar vmware-tools-distrib

解压
tar -zxvf xxxx.tar 

压缩
tar -cvf xxx.tar xxx

-z #以gzip方式归档压缩 
eg:tar -zcvf vmware-tools.tar.gz vmware-tools-distrib

-J #以xz方式进行归档压缩 
eg:
tar -Jcvf vmware-tools.tar.xz vmware-tools-distrib;
tar -Jcvf /home/XD/vmware-tools.tar.xz vmware-tools-distrib

-v #解档解压操作 
eg:tar -xf vmware-tools.tar.xz

-C #指定解压路径

linux 搜索命令 find

  • 基本用法: find 路径 选项
-type #根据文件类型 
find /var/log -type f -name "*.log" ;find /var/log -type d

-name #根据文件名 
find /var/log -type f -name "*.log"

-perm #根据文件权限 
find /var/log -perm 600 -type f -name "*.log"

-user #根据文件所属主 
find /var/log -user vincent
  • 高级用法
find /var/log -type f -name "*.log" -exec wc -l {} \;
; #可以执行多条命令
\ #转义符,转义;使得这条命令结束
{}#把find命令匹配到的每一次结果传递给{}
-exec #执行
eg:
find /var/log -type f -name "*.log" -exec cp -a {} /home/test \;

-mtime #根据文件的变更时间来查找;-n表示更改时间距离现在n天以内;+n表示更改时间距离现在n天以前
eg:
find /var/log -mtime -2  -name "*.log" -exec ls -lrt {} \;
find /var/log -mtime +2  -name "*.log" -exec ls -lrt {} \;

centos7 防火墙和selinux介绍

  • 防火墙
    主要用户信息安全防护,主要有软件防火墙和硬件防火墙。firewalld防火墙是软件防火墙

  • centos7 之前默认采用的防火墙是iptables,而在centos 7则是采用firewall

  • 查看firewalld服务状态
    systemctl status firewalld

  • 开启、重启、关闭firewalld 服务
    开启:
    systemctl start firewalld.service
    service iptables start(linux6)
    关闭:
    systemctl stop firewalld.service
    service iptables stop(linux6)
    重启:systemctl restart firewalld.service

  • 查看firewall防火墙的状态
    firewall-cmd --state
    service iptables status(linux6)

  • 查看防火墙开放端口规则
    firewall-cmd --list-port

  • 开放80端口
    firewall-cmd --permanent --add-port=80/tcp (--permanent永久生效,没有此参数重启后就失效)

  • 加载生效开放的端口
    firewall-cmd --reload

  • 查询指定端口80是否开放
    firewall-cmd --query-port=80/tcp

  • 验证80端口是否开放(80端口是负责对外网访问的)
    安装telnet命令:yum -y install xinetd telnet telnet-server (确认联网状态)
    安装netstat与ifconfig命令:yum -y install net-tools(确认联网状态)

  • 关闭80端口
    firewall-cmd --remove-port=80/tcp

  • SELinux 的三种工作模式
    配置文件路径:/etc/selinux/config
    enforcing :强制模式。违反selinux 规则的行为将会被阻止并记录到日志中去
    permissive:宽容模式。违反selinux 规则的行为将会记录到日志中去
    disabled:关闭模式。

linux 服务器之间的telnet与scp命令的用法

  • telnet :主要用于测试到某台机器的某个端口是否畅通

  • 这个命令是依赖于 xinetd 服务于telnet-server服务

  • 安装:yum -y install xinetd telnet telnet-server (确认联网状态)

  • 用法:telnet IP地址 端口

  • scp命令:用于服务器之间的文件或者文件目录拷贝

用法1:从本机拷贝文件到别的机器
scp 本机文件的存放路径 root@服务器IP:服务器目标路径

eg:从192.168.72.128这台机器的/root/aa.tar.gz文件拷贝到
192.168.72.129的/root/下

scp /root/aa.tar.gz root@192.168.72.129:/root/

用法2:从别的机器拷贝文件到本地目录
scp root@服务器IP:服务器目标路径 本机文件的存放路径

eg:从192.168.72.129这台机器的/root/bbb.tar.gz文件拷贝到
192.168.72.128的/root/下

scp root@192.168.72.129:/root/bbb.tar.gz /root/
  • -r 参数:递归的作用(可以拷贝目录)
    eg:
    scp -r abc root@192.168.72.129:/root/

进程管理命令之ps -ef 和 ps aux 介绍

  • ps -ef
[root@iZbp1ficl3p7xegof5w40zZ /]# ps -ef | more
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0  2017 ?        00:00:11 /sbin/init
root         2     0  0  2017 ?        00:00:00 [kthreadd]
root         3     2  0  2017 ?        00:00:00 [migration/0]
root         4     2  0  2017 ?        00:04:43 [ksoftirqd/0]
root         5     2  0  2017 ?        00:00:00 [stopper/0]
root         6     2  0  2017 ?        00:01:32 [watchdog/0]
root         7     2  0  2017 ?        00:00:01 [migration/1]
root         8     2  0  2017 ?        00:00:00 [stopper/1]
root         9     2  0  2017 ?        00:08:32 [ksoftirqd/1]
root        10     2  0  2017 ?        00:01:27 [watchdog/1]
root        11     2  0  2017 ?        00:53:24 [events/0]
root        12     2  0  2017 ?        03:28:14 [events/1]
root        13     2  0  2017 ?        00:00:00 [events/0]
root        14     2  0  2017 ?        00:00:00 [events/1]
root        15     2  0  2017 ?        00:00:00 [events_long/0]
root        16     2  0  2017 ?        00:00:00 [events_long/1]

UID:用户ID
PID:进程ID
PPID:父进程号
C:CPU的占用率
STIME:进程的启动时间
TTY:TTY终端
TIME:进程执行起到现在总的CPU占用时间
CMD:启动这个进程的命令
  • ps aux
[root@iZbp1ficl3p7xegof5w40zZ /]# ps aux | more
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  19232   576 ?        Ss    2017   0:11 /sbin/init
root         2  0.0  0.0      0     0 ?        S     2017   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S     2017   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S     2017   4:43 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S     2017   0:00 [stopper/0]
root         6  0.0  0.0      0     0 ?        S     2017   1:32 [watchdog/0]
root         7  0.0  0.0      0     0 ?        S     2017   0:01 [migration/1]
root         8  0.0  0.0      0     0 ?        S     2017   0:00 [stopper/1]
root         9  0.0  0.0      0     0 ?        S     2017   8:32 [ksoftirqd/1]
root        10  0.0  0.0      0     0 ?        S     2017   1:27 [watchdog/1]
root        11  0.0  0.0      0     0 ?        S     2017  53:24 [events/0]
root        12  0.0  0.0      0     0 ?        S     2017 208:14 [events/1]
root        13  0.0  0.0      0     0 ?        S     2017   0:00 [events/0]
root        14  0.0  0.0      0     0 ?        S     2017   0:00 [events/1]
root        15  0.0  0.0      0     0 ?        S     2017   0:00 [events_long/0]
root        16  0.0  0.0      0     0 ?        S     2017   0:00 [events_long/1]
root        17  0.0  0.0      0     0 ?        S     2017   0:00 [events_power_ef]
root        18  0.0  0.0      0     0 ?        S     2017   0:00 [events_power_ef]
root        19  0.0  0.0      0     0 ?        S     2017   0:00 [cgroup]
root        20  0.0  0.0      0     0 ?        S     2017   0:00 [khelper]
root        21  0.0  0.0      0     0 ?        S     2017   0:00 [netns]
root        22  0.0  0.0      0     0 ?        S     2017   0:00 [async/mgr]

USER:哪个用户启动了这个命令
PID:进程的ID
%CPU:CPU的占用率
%MEM:内存的使用率
VSZ:如果一个程序完全驻留在内存中一共需要使用多少内存空间
RSS:进程当前占用了多少内存
TTY:tty终端
STAT:表示当前进程的状态(S#处于休眠的状态;D#不可中断的状态 ;Z#僵尸进程 ;X#死掉的进程)
START:启动这个命令的时间点
TIME:进程执行起到现在总的CPU占用时间
COMMAND:启动这个进程的命令

一般执行ps -ef 或者ps aux 命令是查看我们的进程是否启动成功,或者找出进程号,对进程的kill强制关闭

处理海量数据之cut命令

  • 应用场景:通常对数据进行列的提取
    语法:cut [选项]...[file]
选项:
-d   #指定分割符
-f   #指定截取区域
-c   #以字符为单位进行分割
注意:不加-d选项,默认为制表符,不是空格

eg:
以':'为分隔符,截取出/etc/passwd的第一列跟第三列
cut -d ':' -f 1,3 /etc/passwd

eg:
以':'为分隔符,截取出/etc/passwd的第二列到最后一列
cut -d ':' -f 2- /etc/passwd

eg:
截取/etc/passwd文件从第二个字符到第九个字符
cut -c 2-9 /etc/passwd

eg:
比如领导想叫你截取linux上面所有可登陆普通用户
cat /etc/passwd | grep '/bin/bash' | cut -d ':' -f 1 | grep -v root

处理海量数据之awk命令

  • 简介:一个非常强大的数据处理命令,支持条件判断,数组,循环等功能,与grep,sed 被称为linux三剑客

  • 应用场景:通常对数据进行列的提取

  • 语法:
    awk '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
    或awk [选项] '条件1 {执行动作} 条件2 {执行动作} ...' 文件名

  • 特殊要点和说明

printf #格式化输出,不会自动换行。

print #打印出内容,默认会自动换行

%s #代表字符串

\t #制表符

\n #换行符

eg:printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6


NR #行号

$1 #代表第一列

$2 #代表第二列

$NF#代表最后一列

eg:
df -h | awk 'NR==4 {print $1}'
df -h | awk '(NR>=2 && NR <=5) {print $1}'
df -h | awk '{print $NF}'

-F #指定分割符
eg:
awk -F":" '{print $1}' /etc/passwd

BEGIN   #在读取所有行内容前就开始执行,一般用来初始化操作
eg:
cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}'

df -h |grep -v 'Filesystem' | awk '{printf $1} {printf "文件系统使用率:"} {print $5}'

df -h |grep -v 'Filesystem' | awk 'BEGIN {printf "文件系统使用情况:\n \n"} {printf $1} {printf "文件系统使用率:"} {print $5}'

END #结束的时候 执行
df -h |grep -v 'Filesystem' | awk 'BEGIN {printf "文件系统使用情况:\n \n"} {printf $1} {printf "文件系统使用率:"} {print $5} END {printf "一切正常 \n"}'

处理海量数据之sed命令

  • 引用场景:主要对数据进行处理(选取,新增,替换,删除,搜索)

  • 语法:sed [选项] [动作] 文件名

  • 常见的选项和参数

-n #把匹配到的行输出打印到屏幕
p  #以行为单位进行打印,通常与-n一起使用
eg:df -h | sed -n '2p'

d  #删除
eg:df -h | sed '2d'

a  #在行的下面插入新的内容
eg:df -h | sed '2a 1234567890'

i #在行的上面插入新的内容
eg:df -h | sed '2i 1234567890'

c  #替换
eg:df -h | sed '2c 1234567890'

指定字符串替换:s/要被取代的内容/新的字符串/g  #指定内容进行替换
eg:df -h | sed 's/centos-root/Centos7/g'

-i  #对源文件进行修改(高危操作,慎用,用之前需要备份源文件)
eg:sed -i 's/Centos7/Centos8/g' df.txt

-n 搜索,在文件中搜索内容
eg:sed -n '/tmpfs/p' df.txt

-e  #表示可以执行多条动作
sed -e 's/Centos8/Centos7/g' -e 's/tmpfs/TMP/g' df.txt >123.txt

linux下常用安装软件 rpm 介绍

  • rpm 安装

安装别人编译好的软件包,rpm即Redhat Package Manager,是Redhat的软件包管理方式

  • 优点
    1)、软件已经编译打包,所以传输和安装方便,让用户免除编译
    2)、在安装之前,会先检查系统的磁盘、操作系统版本等,避免错误安装

  • 缺点
    1)、软件包安装的环境必须与打包时的环境一致或相当
    2)、必须安装了软件的依赖包

  • rpm包的命名规则

xxx-2.20-7.el7.x86_64.rpm
xxx   #代表的是软件名称
2.20  #代表的是软件版本号;
7     #代表的是发布版本号,指的是这个rpm软件包是第几次编译生成的
el7   #代表的是企业版的7操作系统
X86   #代表的是CPU架构
64    #代表的是系统的位数
  • 安装
-i   #install 安装软件包
-v   #输出更多的详情信息
-h   #输出哈希标记(#)
--nodeps   #不验证软件的依赖

rpm -ivh zsh-5.0.2-7.el7.x86_64.rpm

rpm -ivh mariadb-server-5.5.35-3.el7.x86_64.rpm --nodeps
-a #查询所有已安装的软件包 
eg:rpm -qa zsh

-f #查询文件所属软件包 
eg:rpm -qf /usr/bin/zsh

-p #查询软件包

-i #显示软件包信息

-l #显示软件包中的文件列表

-d #显示被标注为文档的文件列表

-c #显示被标注为配置文件的文件列表
  • rpm 包升级
-U  #升级rpm软件服务
eg:rpm -Uvh zsh-5.0.2-7.el7.x86_64.rpm
  • rpm包 卸载
-e #卸载
eg:rpm -e zsh

linux下常用安装软件 yum介绍

  • 安装
    基于 C/S 架构,yum安装称之为傻瓜式安装

  • 优点
    方便快捷,不用考虑包依赖,自动下载软件包。

  • 缺点
    人为无法干预,无法设定想要的参数

  • 配置本地的yum源

配置文件的路径:/etc/yum.repos.d/
cat  baidu-bcm.repo

[Centos7-yum]  #yum源名称,唯一的,用来区分不同的 yum 源

name=Centos7-source  #对yum源描述信息

baseurl=file:///mnt  #yum源的路径(repodata目录所在的目录)

enabled=1  #表示启用 yum 源

gpgcheck=0  #为1表示使用公钥检验 rpm 的正确性
  • 安装方式的使用
yum repolist  #查看yum源列表

yum clean all  #清空之前yum缓存

yum makecache  #创建yum缓存,为后续安装更加快速

yum -y install  #安装软件 yum -y install zsh

yum info zsh  #查看zsh软件包信息(不管安装了没都会有信息)

yum info installed zsh  #查看已经安装好的软件信息

yum -remove zsh  #卸载软件

yum search gcc  #搜索gcc软件

yum update  #升级软件

linux下 源码编译安装方式 介绍

  • 优点
    编译安装过程,可以设定参数,指定安装目录,按照需求进行安装,指定安装的版本,灵活性比较大。

  • 缺点
    需要对依赖包一个一个的进行安装,不敢随便升级,一升级可能会由于依赖包的是不能使用导致一系列连锁反应

  • 安装步骤

1.解压源码包  tar -xf 源码包

2.配置
进入解压后的目录,用./configure命令来配置相关信息(比如指定安装目录 --prefix=/usr/local/nginx)和生成Makefile文件

3.编译
make -j4

4.安装
make install

相关文章

网友评论

      本文标题:linux基础

      本文链接:https://www.haomeiwen.com/subject/ycjtmctx.html