博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux基础命令-Nginx-正则表达式( grep sed awk )-Shell Script--etc
阅读量:6227 次
发布时间:2019-06-21

本文共 12213 字,大约阅读时间需要 40 分钟。

Linux基础使用

内存

  • 查看swap分区信息 > swapon -s
  • 添加swap分区 > mkswap /dev/sdb2 > 激活 swapon -a /dev/sdb2 即可
  • 移除swap分区 > swapoff /dev/sdb2
  • 查看系统版本 > cat /etc/redhat-release > more /etc/*release 可以看到更多信息
  • buffer A buffer is something that has yet to be "written" to disk
  • cache A cache is something that has been "read" from the disk and stored for late use
  • 清理cache > echo 3 > /proc/sys/vm/drop_caches
  • echo $[88316+8764] 进行简单的计算(+-*/)
  • total-used=free+buff/cache 内存就是用来分buffer和cache的
  • dd if=/dev/zero of=/root/test bs=50M count=1 测试磁盘速度,zero为空文件

进程管理

  • ps aux 查看所有进程 > grep过滤的意思
  • 查看特定的进程 > ps aux | grep firefox
  • 杀死进程 > kill -9 3489 ( 9表示强制杀) 或者 pkill -9 firefox
  • firefox & 即命令后接&在后台启动,在当前终端使用jobs可以查看工作号 > kill -9 %1使用工作号杀
  • centos7最小化安装没有ptree (树型显示当前运行的进程),需要安装yum install psmisc
  • pgrep sshd 直接显示包含sshd的进程的PID号

软件包管理

  • rpm -ivh rpm文件名 i 安装, v 显示安装信息, h显示进度条 后接--nodeps忽略以来,--force覆盖安装

  • rpm -qi 软件名 查看软件的详细信息 ,q 表示查询, i information

  • rpm -ql 软件名 查看软件位置, l 表示位置

  • rpm -qf 文件名 查看该文件是由哪个软件包产生的

  • 查看命令对应的文件的真实位置 which ls

  • rpm -qa 显示全部安装的rpm包,跟grep结合验证是否安装了某个包,rpm -qa | grep vsftp 或者 rpm -q vsftpd 必须知道软件包全名

  • ls ----> /etc/usr/ls --color=auto 这是流程 ,alias s='ls' 为ls命令起别名, 永久的话修改vim /etc/bashrc 或者vim /etc/profile

  • rpm -e 软件包名 卸载软件

  • rpm -e `rpm -qa \grep vsftp 这里反引号的作用是把后面的结果看作变量作为前面的输入

  • rpm安装对依赖性问题不好解决,需要先手动安装依赖包,yum自动解决依赖性

  • 手动配置yum源,事先将完整的光盘挂载到/opt,移走原有的repo,然后 vi /etc/yum.repos.d/loal.repo

    [local]name=local.repobaseurl=file:///opt   #可以本地也可以网上enable=1gpgcheck=0

    yum clean all清除缓存后就可以用自己配置的yum源安装yum -y install xxxxx

  • yum erase xxx删除已经安装的软件 或 yum remove xxx

  • yum install epel-*安装扩展源

  • yum makecache创建缓存提高下次装软件的速度

  • 要想保留yum下载的rpm包,需要更改设置vim /etc/yum.conf

    cachedir=/root/rpm_bak   #路径自己设置keepcache=1   #0改为1
  • 部署自己的yum仓库

    1. 新建仓库文件夹mkdir /repo_httpd
    2. 将所有依赖包和该rpm包放在这个文件夹中,方法如上一条所示
    3. 创建依赖关系createrepo /repo_httpd, 之后在该文件夹中生成repodata文件夹
    4. 手动配置yum源,如之前所示, 其中baseurl=file:///repo_httpd
    5. 同理修改baseurl=http://xxxxx可以自定义网络yum源
  • yum grouplist列出有哪些软件包组, yum groupinstall "开发工具"安装开发工具

  • wget --no-check-certificate https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz下载,tar xvf Python-3.6.1.tgz解压,进入目录,configure为安装配置文件,为了生成makefile文件,./configure --prefix=/usr/local/python3.6 , 然后 make && make install 编译并安装,报错的话缺啥装啥yum install zlib*

  • PATH=/usr/local/python3.6/bin:$PATH 设置临时的环境变量, 永久的话vim /etc/profile在末尾加上

    PATH=/usr/local/python3.6/bin:$PATHexport PATH
  • yum update全部更新包括配置和内核,yum upgrade只更新软件包

  • 安装yum install sysstat*里面有查看运行信息的软件vmstat iostat

  • 安装yum install net-tools ,执行netstat -tunalp 查看端口详细信息 可以netstat -tunalp | grep 22查看目的端口 。另外sar啥也能看

n g i n x

  • yum install nginx 安装

  • 写配置 vim /etc/nginx/nginx.conf 摘取部分如下

    worker_processes auto;  #自动检测CPU数目,几个CPU开几个进程error_log /var/log/nginx/error.log;  #错误日志include /usr/share/nginx/modules/*.conf;  #包含的模块events {  #一个进程开多少线程    worker_connections 1024;}http {    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';    #日志格式    access_log  /var/log/nginx/access.log  main;    #访问日志,以main格式写入    sendfile            on;    tcp_nopush          on;    tcp_nodelay         on;    keepalive_timeout   65;    types_hash_max_size 2048;    include             /etc/nginx/mime.types;    default_type        application/octet-stream;    # Load modular configuration files from the /etc/nginx/conf.d directory.    # See http://nginx.org/en/docs/ngx_core_module.html#include    # for more information.    include /etc/nginx/conf.d/*.conf;    #包含的配配置文件    server {  #核心配置        listen       80 default_server;  #监听端口号        listen       [::]:80 default_server;        server_name  _;        root         /usr/share/nginx/html;  #Web根目录        # Load configuration files for the default server block.        include /etc/nginx/default.d/*.conf;        location / {  #匹配/a/b/c/d.txt,若以/开头则匹配这个配置,没有内容则按全局配置        }    }
  • URL 统一资源定位符 11.12.13.14:80 找到唯一的一个软件

  • URI 统一资源标识符 /a/b/c/d.txt 找到唯一的一个文件 /usr/share/nginx/html/a/b/c/d.txt

  • systemctl start nginx 启动nginx status查看状态

  • systemctl stop firewalld 关闭防火墙,systemctl disable firewalld开机不启动,enable开机启动, iptables -F 清除防火墙配置

  • tail -f /var/log/nginx/access.log动态查看日志文件

反向代理

  1. 将虚拟机拷贝3个提供Web功能,原虚拟机提供反向代理

  2. 按照官网的手册 配置提供反向代理的机器

  3. 为实现数据的一致,给几台Web服务器提供共享存储 如 NFS,文件存储

    对象存储--->像网盘一样,下载下来修改再上传覆盖,通过URI定位。 块存储 ---> 类似一整块磁盘

  4. 可以给NFS服务器专门挂载一块硬盘

  5. 临时配置IP地址 ifconfig 网卡名 IP地址

  6. ##服务端配置[root@localhost ~]# mkdir /share   #新建文件夹[root@localhost ~]# mount /dev/sdb1 /share/^C    #挂载一块硬盘[root@localhost ~]# touch /share/share.txt   [root@localhost ~]# echo 'hello share' > /share/share.txt[root@localhost ~]# vim /etc/exports #编辑配置文件[root@localhost ~]# cat /etc/exports/share 192.168.58.0/24(rw,sync,fsid=0)  #配置文件内容[root@localhost ~]# chmod -R o+w /share #为文件夹添加权限[root@localhost ~]# systemctl start rpcbind.service  #先开启RPC服务[root@localhost ~]# systemctl start nfs-server.service  #再开启NFS服务[root@localhost ~]# systemctl enable nfs-server.service  #设置开机启动Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.[root@localhost ~]# systemctl enable rpcbind.service
  7. ##客户端配置[root@localhost ~]# systemctl enable rpcbind.service && systemctl enable nfs-server.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.  #开机启动[root@localhost ~]# showmount -e 192.168.58.129 #查看共享服务Export list for 192.168.58.129:/share 192.168.58.0/24[root@localhost ~]# mount -t nfs 192.168.58.129:/share /usr/share/nginx/html/ #挂载[root@localhost ~]# ls /usr/share/nginx/html/ #查看挂载后文件内容share.txt[root@localhost ~]# df |grep 129 #查看磁盘信息192.168.58.129:/share 18351104 2376448 15974656   13% /usr/share/nginx/html
  8. nginx

网络配置

ifconfigens33: flags=4163
#功能# mtu 1500#最大传输单元,字节单位# inet 192.168.58.129 netmask 255.255.255.0 broadcast 192.168.58.255 inet6 fe80::c00d:cb8b:4aed:6cc7 prefixlen 64 scopeid 0x20
ether 00:0c:29:1c:9a:5a#MAC地址# txqueuelen 1000 (Ethernet) RX packets 3422 bytes 444096 (433.6 KiB) #收了多少包# RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2374 bytes 418819 (409.0 KiB) #传了多少包# TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73
mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1 (Local Loopback) RX packets 20 bytes 1524 (1.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 20 bytes 1524 (1.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  • ifconfig ens33 192.168.58.200/24手动配置IP地址, 24表示子网掩码255.255.255.0

  • vim /etc/resolv.conf 修改DNS信息 nameserver 192.168.58.2

  • route add default gw 192.168.58.254 netmask 255.255.255.0添加网关,route -n查看路由信息, del为删除

    [root@localhost share]# route -nKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface0.0.0.0         192.168.58.2    0.0.0.0         UG    100    0        0 ens33  #不一个子网192.168.58.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33  #同一个自网内
  • 要想永久修改 cd /etc/sysconfig/network-scripts/ 该目录下有很多配置信息 vim ifcfg-ens33

    TYPE=EthernetBOOTPROTO=staticIPADDR=192.168.58.200NETMASK=255.255.255.0GATEWAY=192.168.58.254DNS1=192.168.58.254DNS2=114.114.114.114DEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=2ceec922-bd48-4fcb-8c96-56a288ddb680DEVICE=ens33ONBOOT=yes #开机激活网卡

    重启网络服务systemctl restart network 即可

  • vim /etc/hosts 修改hosts

  • [root@localhost network-scripts]# hostnamectl set-hostname centostest #设置hostname[root@localhost network-scripts]# hostname #查看hostnamecentostest

SSH

  • [root@localhost ~]# ssh 192.168.58.129  #登录默认root  实际ssh root@192.168.58.129The authenticity of host '192.168.58.129 (192.168.58.129)' can't be established.ECDSA key fingerprint is 82:68:11:05:e9:98:f9:bb:df:a1:02:e2:72:59:cb:0e.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.58.129' (ECDSA) to the list of known hosts.root@192.168.58.129's password:    #输入密码Last login: Mon Apr  3 22:48:51 2017 from 192.168.58.1[root@centostest ~]#    #SSH登录成功,前后主机名不一样
  • scp远程复制文件

    [root@centostest ~]# scp /etc/hosts 192.168.58.131:/tmp  #远程复制,也可用域名,前后位置可换 -r目录The authenticity of host '192.168.58.131 (192.168.58.131)' can't be established.ECDSA key fingerprint is 82:68:11:05:e9:98:f9:bb:df:a1:02:e2:72:59:cb:0e.Are you sure you want to continue connecting (yes/no)? yPlease type 'yes' or 'no': yesWarning: Permanently added '192.168.58.131' (ECDSA) to the list of known hosts.root@192.168.58.131's password:  #输入密码hosts                                                  100%  159     0.2KB/s   00:00 #复制成功
  • 在客户端把SSH密钥生成 ssh-keygen 之后在/root/.ssh/目录下有生成的信息id_rsa.pub

  • 把密钥等发给服务端 ssh-copy-id -i 192.168.58.131 之后在服务端的相同路径下会找到相关文件authorized_keys , 即发给了root用户目录下,如发给其他用户可以在该用户目录下找到公钥

  • 之后客户端直接ssh 192.168.58.131不需要输入密码即可登陆成功

  • 配置文件在vim /etc/ssh/sshd_config 。若服务端更改端口为8888,以上发送密钥时需要ssh-copy-id -i id_rsa.pub 192.168.58.131 -p 8888 ,连接时ssh 192.168.58.131 -p 8888 即可

bash

  • source a.sh没加权限也可以执行

  • 命令优先级

    1. alias #alias查看当前的别名 alias ppp='ls -l'设置 unalias ppp取消2. compound commands #if for while3. function #function ppp() { echo hello;echo bash; }定义 ppp执行 set查看当前函数 unset ppp清除4. build_in #内建 如cd5. hash #hash查看 hash -r清除6. $PATH #路径7. error:command not found
  • 通配符

    $[] #运算 同$(())$()  #同``一样${}  #% 取余^  ! #取反&  #后台运行&& 与| 管道|| 或* 任意? 任意一个= 赋值== 判断是否相等[ $x == $y ]  ---> test echo $? 取上一条命令的执行结果\  ---> "$x"软引用,取值  '$x'硬引用,$没有其他意义: 永远为真,常与while连用; 命令分割/ 路径分割符>> 追加> 覆盖​

固化命令的方式

#以登录的方式加载顺序/etc/profile/etc/profile.d/a.sh/root/.bash_profile/root/.bashrc/etc/bashrc#不登录的方式加载顺序/root/.bashrc/etc/bashrc/etc/profile.d/a.sh

正则表达式

grep ----

  1. 常用参数

    -n  :显示行号-e  :指定多个规则-o  :只显示匹配的内容-q  :静默模式,没有任何输出,得用echo $?来判断执行成功(0)没有,即有没有过滤到想要的内容-l  :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc -A  :如果匹配成功,则将匹配行及其后n行一起打印出来 如 grep -A 2 'root' test.txt-B  :如果匹配成功,则将匹配行及其前n行一起打印出来-C  :如果匹配成功,则将匹配行及其前后n行一起打印出来--color-c  :如果匹配成功,则将匹配到的行数打印出来-E  :等于egrep,扩展-i  :忽略大小写-v  :取反,不匹配-w:匹配单词例:过滤掉无用的行,包括注释和空格grep -v '^#' /etc/ssh/sshd_config | grep -v '^ *$'
  2. 正则表达式

    ^    行首$    行尾.    除了换行符以外的任意单个字符*    前导字符的零个或多个.*   所有字符[]   字符组内的任一字符  #若要匹配-需要放在最后\-[^]  对字符组内的每个字符取反(不匹配字符组内的每个字符)^[^] 非字符组内的字符开头的行[a-z] 小写字母  [A-Z] 大写字母[a-Z] 小写和大写字母[0-9] 数字\<   单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词\>   单词尾? 前导字符零个或一个+ 前导字符一个或多个abc|def abc或defa(bc|de)f abcf 或 adefx\{m\} x出现m次     #egrep不加\x\{m,\} x出现m次至多次(至少m次)x\{m,n\} x出现m次至n次

    sed ---- 流编辑器 stream editer,是以行为单位的处理程序

sed [options] 'command' in_file[s]options 部分-n  静默模式,不显示默认输出-e  指定多个规则-i  直接修改原文件-f  指定匹配规则文件command 部分'[地址1,地址2] [函数] [参数(标记)]'//里面正则表达式定址例: sed -r '1 s/()()()/\1\2\3/g' passwdbk  1表示定位第几行,g表示把这一行的所有匹配的都修改了,括号表示第几部分,后面的\1表示第一部分显示的位置

awk ---- 处理有格式的文件 !!!!!!

awk [options] 'commands' filesoption-F 定义字段分隔符,默认的分隔符是连续的空格或制表符使用option中的-F参数定义间隔符号用$1,$2,$3等的顺序表示files中每行以间隔符号分隔的各列不同域 例:awk -F: '{print $1,$4}' passwdbk $0所有NF变量表示当前记录的字段数  可用 $NF 取最后一段NR表示行号 例: awk -F: 'NR>=3 && NR<=5{print NR,"----",$1}' passwdbk   ||或//里面正则表达式定址 例 awk -F: '/nologin$/{print $1}' passwdbk让某一部分匹配正则 awk -F: '$1~/^r.*t$/{print $NF}' passwdbk-v 定义变量并赋值 也可以借用次方式从shell变量中引入例:count=7awk -v x=$count -F: '$3 >= x{print $1}' passwdbkaddr=`ifconfig |awk 'NR==2{print $2}'` 取IP地址

其他命令

du -sh /boot/   #统计目录大小cat test |sort |uniq -c #排序去重,c显示重复的行数cat /etc/passwd |cut -d: -f2,3 #d表示以什么分割 f指定取第几部分 可作为awk的简单模式dd if=/dev/zero of=/test.ha bs=20M count=1 #新建一个指定大小的文件find / -size +10M -size -30M -type f -name \*.ha #在/目录下寻找文件大小>10M且<30M,类型为普通文件,后缀名为ha的文件grep -rl 'root' /etc #在/etc目录下寻找文件内含有'root'的文件并把文件名输出,r表示递归,l表示显示文件名

shell script

中括号 [] 相当于 test获取当前内存使用率:mem_per=`echo "scale=2;$mem_used/$mem_total" | bc -l | cut -d. -f2` #scale保留几位小数,bc浮点运算echo ${mem_per}%$$ 进程PID$* 所有参数$# 参数个数当nginx关闭时开启nginx#!/bin/bashvar=`systemctl status nginx| awk 'NR==3{print $2}'`if [ $var = inactive ]    then        systemctl start nginxfi将x.sh文件移动到/usr/bin/目录下可以在任何位置使用x执行改脚本

计划任务

rondtab -e -u root  #e表示编辑 u表示用户在计划任务中所有命令都使用绝对路径!!!

------------本地有md文件备份----------

-----------------end------------------

转载于:https://www.cnblogs.com/freelandun/p/6754782.html

你可能感兴趣的文章
javascript如何判断访问网页的设备及是否支持触屏功能
查看>>
MFC 虚函数与消息映射区别
查看>>
每日一小练——列出全部子集
查看>>
[再寄小读者之数学篇](2014-06-23 Bernstein's inequality)
查看>>
微信公众平台开发(98) UnionID
查看>>
《CLR via C#》读书笔记 之 线程基础
查看>>
Linux中的lo回环接口详细介绍
查看>>
玩转Web之servlet(三)---一张图看懂B/S架构
查看>>
Neutron中的Service类
查看>>
MCU开发之I2C通信
查看>>
angular学习笔记(二十七)-$http(5)-使用$http构建RESTful架构
查看>>
阿里集团2015届校园招聘内推
查看>>
Android 面试精华题目总结
查看>>
SQL函数简述
查看>>
Swift 注释
查看>>
应对Memcached缓存失效,导致高并发查询DB的几种思路
查看>>
PLSQL_性能优化系列14_Oracle High Water Level高水位分析
查看>>
A Game with Colored Balls
查看>>
使用哈希加盐法来为密码加密【转】
查看>>
fastjson经常用法
查看>>