Linux基础命令-Nginx-正则表达式( grep sed awk )-Shell Script--etc
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 informationrpm -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.repo
baseurl=file:///opt #可以本地也可以网上
enable=1
gpgcheck=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仓库
- 新建仓库文件夹
mkdir /repo_httpd
- 将所有依赖包和该rpm包放在这个文件夹中,方法如上一条所示
- 创建依赖关系
createrepo /repo_httpd
, 之后在该文件夹中生成repodata文件夹 - 手动配置yum源,如之前所示, 其中
baseurl=file:///repo_httpd
- 同理修改
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:$PATH
export 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
动态查看日志文件
反向代理
将虚拟机拷贝3个提供Web功能,原虚拟机提供反向代理
按照官网的手册 Using nginx as HTTP load balancer 配置提供反向代理的机器
为实现数据的一致,给几台Web服务器提供共享存储 如 NFS,文件存储
对象存储--->像网盘一样,下载下来修改再上传覆盖,通过URI定位。 块存储 ---> 类似一整块磁盘
可以给NFS服务器专门挂载一块硬盘
临时配置IP地址
ifconfig 网卡名 IP地址
##服务端配置
[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
##客户端配置
[root@localhost ~]# systemctl enable rpcbind.service && 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 ~]# 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
网络配置
ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>#功能# 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<link>
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 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
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.0vim /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 -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.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=Ethernet
BOOTPROTO=static
IPADDR=192.168.58.200
NETMASK=255.255.255.0
GATEWAY=192.168.58.254
DNS1=192.168.58.254
DNS2=114.114.114.114
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=2ceec922-bd48-4fcb-8c96-56a288ddb680
DEVICE=ens33
ONBOOT=yes #开机激活网卡
重启网络服务
systemctl restart network
即可vim /etc/hosts
修改hosts[root@localhost network-scripts]# hostnamectl set-hostname centostest #设置hostname
[root@localhost network-scripts]# hostname #查看hostname
centostest
SSH
[root@localhost ~]# ssh 192.168.58.129 #登录默认root 实际ssh root@192.168.58.129
The 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)? yes
Warning: 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)? y
Please type 'yes' or 'no': yes
Warning: 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 while
3. function #function ppp() { echo hello;echo bash; }定义 ppp执行 set查看当前函数 unset ppp清除
4. build_in #内建 如cd
5. 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 ----
常用参数
-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 '^ *$'
正则表达式
^ 行首
$ 行尾
. 除了换行符以外的任意单个字符
* 前导字符的零个或多个
.* 所有字符
[] 字符组内的任一字符 #若要匹配-需要放在最后\-
[^] 对字符组内的每个字符取反(不匹配字符组内的每个字符)
^[^] 非字符组内的字符开头的行
[a-z] 小写字母
[A-Z] 大写字母
[a-Z] 小写和大写字母
[0-9] 数字
\< 单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词
\> 单词尾
? 前导字符零个或一个
+ 前导字符一个或多个
abc|def abc或def
a(bc|de)f abcf 或 adef
x\{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' files
option
-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=7
awk -v x=$count -F: '$3 >= x{print $1}' passwdbk
addr=`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/bash
var=`systemctl status nginx| awk 'NR==3{print $2}'`
if [ $var = inactive ]
then
systemctl start nginx
fi
将x.sh文件移动到/usr/bin/目录下可以在任何位置使用x执行改脚本
计划任务
rondtab -e -u root #e表示编辑 u表示用户
在计划任务中所有命令都使用绝对路径!!!
------------本地有md文件备份----------
-----------------end------------------
Linux基础命令-Nginx-正则表达式( grep sed awk )-Shell Script--etc的更多相关文章
- 『学了就忘』Linux基础命令 — 31、grep命令和通配符
目录 1.grep命令介绍 2.find命令和grep命令的区别(重点) (1)find命令 (2)grep命令 3.通配符与正则表达式的区别 (1)通配符: (2)正则表达式: 1.grep命令介绍 ...
- Linux基础命令---显示文本grep
grep 按照指定的模式,在文件中搜索匹配的行,将结果显示在标准输出.另外还有两个指令egrep相当于grep –E,fgrep相当于grep -F.如果没有给出文件名,那么从标准输入读取. 此命令的 ...
- linux中使用head,tail,grep, sed,awk三种方法显示文档中间若干行(指定任意行)
需要显示文本中间20-25行. 创建一个30行的文档,命名为30.txt并显示在屏幕 [root@v2-ui data]# seq 30 > 30.txt && cat 30.t ...
- Linux 文本处理工具(grep sed awk )
^test: 以test开头; test$: 以test结尾: ^$: 表示空行,不是空格: . :代表且只代表任意一个字符(其他功能:当前目录,加载文件): \ : 代表转义字符,表示特殊字符: * ...
- 开发环境入门 linux基础 (部分)正则表达式 grep sed
/etc/profile /etc/bashrc .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特 ...
- Linux三剑客grep/sed/awk
grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...
- linux三剑客grep|sed|awk实践
最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk
- [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)
linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...
- Linux基础命令小结(超全!!)
Linux目录结构 1.bin 存放经常使用的指令比如ll,cp 2.sbin 系统管理员使用的系统管理指令 3.home 存放普通用户的住目录 4.root 系统管理员的用户主目录 5.boot 存 ...
随机推荐
- windows10 VM12 安装Mac OS X 10.11
转载自:http://blog.csdn.net/j755ing/article/details/69400439 第一步: 下载 材料/工具: 下载 VMware Workstation 12 Pr ...
- python第一百零二天-----第十七周作业
由于内容众多 直接使用 git 链接 : https://github.com/uge3/hosts_masg 主机管理WEB页面 使用 SQLALchemy 主机管理(8列) ip 用户表: 用户名 ...
- 【 PostgreSQL】查询某模式下所有表的分布键信息
想看下某模式下所有表创建的分布键是否合理,查找系统表文档拼出如下sql,亲们如果有更好的sql或者意见欢迎留言! SELECT aaa.nspname AS "模式名", ...
- 非对称加密与GPG/PGP
最近浏览博客的时候,经常会看到博主展示出自己的公钥,于是对 GPG/PGP 产生兴趣.下面简单记录相关文章的链接,方便以后了解. 简介: 1991年,程序员Phil Zimmermann为了避开政府的 ...
- 安装slide后Powerpoint 不自动退出的解决方案
症状 打开PPT文件,powerpoint界面不启动. 原因 安装slide之后,powerpoint关闭后,powerpnt.exe进程不正常退出,需要手工终止. 解决方案 打开cmd,进入slid ...
- 【PAT】B1061 判断题(15 分)
简单逻辑题, #include<stdio.h> #include<algorithm> using namespace std; int main(){ int N,M;// ...
- django中的中间件机制和执行顺序
这片文章将讨论下面内容: 1.什么是middleware 2.什么时候使用middleware 3.我们写middleware必须要记住的东西 4.写一些middlewares来理解中间件的工作过程和 ...
- vue打包速度优化
这是一个很头疼的问题,webpack极大的简化了前端自动化配置,但是打包速度实在是不如人意.在此之前,本人也尝试过网友的一些方法,但是,很多坑,跳进去就出不来,经过多个项目实践,现总结一下我用到的优化 ...
- Android平台调用Web Service:线程返回值
接上文 前文中的遗留问题 对于Java多线程的理解,我曾经只局限于实现Runnable接口或者继承Thread类.然后重写run()方法.最后start()调用就算完事,可是一旦涉及死锁以及对共享资源 ...
- log4j2 yml
1.log4j2默认加载文件为log4j2.xml 2.要使用yml加载需添加依赖 <!-- https://mvnrepository.com/artifact/com.fasterxml.j ...