坚持#第239天~Shell脚本

vsftpd主动模式:数据端口是20,连接端口是21

vsftpd被动模式:数据端口是大于1024,连接端口是21

 

ssh指纹存在客户端那边,密钥是客户端产生,然后传递给服务器

 

客户端访问smb是怎么访问的?

点击连接到服务器smb://192.168.1.250    

 

nfs开机自动挂载的类型是nfs,有ip地址挂载的一定是nfs类型的挂载

 

httpd实现在浏览器输入www.uplook.com/logs会有对应的网页出现

Alias /logs /var/www/test

重启服务

vim /etc/hosts

ip 对应的www.uplook.com/logs

 

一个网卡对应一个虚拟主机

<VirtualHost *:80>

ip:端口

 

动态:填表会提交表的信息,会和用户一个交互的过程

cgi-bin支持脚本

 

学习源码包安装

下载老师的software-httpd下载下来

cat 出来的是乱码

file 出来的是信息

利用cp拷贝并改名

tar -cf  -c是创建,f是文件

-x是解压

tar xf(减号可以省略)

-C改变至目录

tar xf httpd-2.2.9.tar.gz -C/usr/local/src

cd /usr/local/src

ll

cd 进去

要用的就是configure

做编译安装:编译安装的三部曲,编译三部曲

vim configure

编译安装/源码安装/翻译安装

1.编译环境 需要编译器gcc

源码安装的优点是可定制性强

MPM={进程/线程/event}

rpm -qa | gcc检测有没有gcc

若没有gcc

./configure--prefix=/usr/local/apache软件包的安装目录制定在这个目录下

就会提示error

yum install gcc -y

安装完gcc后再去执行./configure --prefix=/usr/local/apache

a.指定安装路径

b.启用或禁用某项功能

c.和其他软件关联

d.检查安装环境,例如是否有编译器,是否满足软件的依赖需要

若以后编译gnix就写这个目录:/usr/local/ngix

在/usr/local/local/src/httpd2.最终生成Makefile这个文件

若编译失败,就执行make clean 清除掉已经编译产生的*.o目录文件,再重新编译

第二部:

make回车    意思是按Makefile文件编译    -j  2  指定两颗cpu编译

编译完了就会自动离开目录

make install安装

mpm是工作模式,默认用的是prefork进程模式

/usr/local/apache/htdocs编译安装的文档目录

/usr/local/apache/error错误日志

此时已经安装好了,去找他

第三部:

cd /usr/local/apache

有bin命令目录,

cd /usr/local/apache/conf

想提供一个注意怎么做?

cd ..

cd htdocs进入写html的目录

不受systemctl控制

要用这个:

cd bin

apachectl start启动服务

systemctl stop httpd

./apachectl start

rpm装的

编译装的

两个80端口,只能运行一个,先停掉一个httpd,再开启一个./apachectl start

 

tar czvf  test2dir.gz testdir压缩(会保留原来的文件)

tar xzvf test2dir.gz解压(会保留原来的压缩包)

 

开始学习shell(6天):

考点:

1.Shell是什么,有什么功能,有哪几种类型,有什么特性?

答:shell就是一个命令解释器,负责人与计算机交互的功能

是一种程序设计语言,由变量、关键字、各种控制语句构成

是一种解释性语言:shell/perl/python/java

复杂科学运算、交叉平台不适合用shell

管理、维护系统编程可以用shell

当前系统中支持哪些shell(shell的类型)

cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/bin/tcsh

/bin/csh

usr是软链接,不用管

注意:各种脚本内凡是/bin/sh表示使用默认的shell

一般情况下:

linux系统默认使用的是/bin/bash

unix系统默认使用的是/bin/ksh

centos主流的shell类型是/bin/bash

查看当前使用的shell是什么:echo $SHELL

chsh -s /bin/ksh   更改shell永久更改当前的shell  set

前提要有ksh这个命令,没有的话就装:yum install ksh -y

临时更改就用ksh,exit是退出

bash的特性:

①支持历史记录、命令记忆功能

history 查看历史记录   vim ~/.bash_history

最多1000条

②!747直接执行历史第747条记录

alt . 上面命令的最右边的参数

!sys 执行理事记录中最新以sys开头的命令

上下方向键可以翻动历史记录

history -c删除历史命令清除历史命令,还有文件的存在echo>~/.bash_history

历史记录的条数:

echo $HISTSIZE默认为1000条

vim /etc/profile进入HISTSIZE配置文件

/HISTSIZE搜索得到条数,可以改

命令和文件补全纠错功能tab

支持快捷键:

ctrl+l,a,e,u,k(和u是一对),c,d

别名alias

支持定义环境变量:例如ls的高亮效果

 

进程的前后操作:

一个程序怎么在前台打开:直接输入程序名;

在后台打开:程序名 &

 

通配符:

*所有

?匹配任意一个字符

{}1..4表示1~4

[]匹配一个字符

ls a[1-3].txt

ls a[!1-3].txt也是和?一样占了一个位置,!要放在中括号里面

(cd /root;touch aa.txt)可以开启子shell:在shell环境中在开启一个shell,新开启的被称为子shell,而原来的shell称为父shell,子shell看不到,执行完之后就关了子shell

管道 输出输入重定向

|

>> 

<< 

0 1 2 &>>

$取变量的值

&后台运行

;命令的分隔符,两边命令互不干扰

&&逻辑与   ||逻辑或   \n  \t

\r要与-ne一起用

echo -e"nihao\tlitao"使用\t,\n之前要加-e

题目:创建tom用户,若存在就不创建,要求运用逻辑或:

id tom || useradd tom

题目:创建一个目录/bb,然后在目录里面创建一个文件test.txt,提示,可以利用逻辑与先判断那个目录存不存在,然后利用或

ls /bb && touch/bb/test.txt || mkdir /bb;touch /bb/test.txt

 

命令的引用

‘’ 强引 能够屏蔽除了自己以外的所有特殊字符

“” 弱引 能够屏蔽大部分特殊字符,屏蔽不了$和·

·· 反引号  使用的是命令执行结果

echo “date”

[root@server testdir]# echo "todayis `date`"

today is 2017年 12月 11日 星期一 14:50:27 CST题目:vim 由那个软件包提供?

题目:查询vim是由哪个软件包提供的?

rpm -qf·which vim·

哈哈,rpm -qf是可以通过命令的路径来查看那个命令是由哪个软件包安装的

$()和反引号的区别是:前者可以嵌套,后者不能嵌套

 

2.Shell脚本创建,运行方式(执行方法),排错?

脚本的创建:

由文本文件构成  解释型语言

脚本:命令的堆砌、加上流程控制语句

把平时在终端上执行的非交互式命令一次性写到一个文本文件里面,然后给一个命令解释器。

交互式命令:fdisk  vim man等等

非交互式命令:ls  cd touch等等

 

创建一个shell脚本:

组成shell的元素:

①脚本的名字,以.sh为结尾

vim one.sh

②制定一个命令解释器,写注释(作者、版本、创建时间、更新时间、脚本的功能)

除了第一行#!之外的全部以#开头的全部都是注释行

#!/bin/bash -->用来指定脚本中的命令使用的解析环境是什么

perl:#!/usr/bin/perl

python:#!/usr/bin/python

③命令、流程控制语句等 要执行的命令

 

创建一个简单的shell脚本

vim one.sh保存退出

执行脚本:

bash one.sh

sh one.sh

.   one.sh

加上执行权限之后:绝对路径脚本名即可

 

3.Shell变量?

变量不能以数字开头啊

 

变量的分类:自定义变量,环境变量,位置变量,特殊变量,预定于变量

num=100;touch ${num}haha防止歧义

变量的范围是只在当前的shell中有效

进入子shell的话用bash回车,返回的话用exit回车

unset是清除变量的值

 

环境变量:用来指定操作系统运行环境的一些参数,在父shell里面设置的变量在子shell里面生效的话,说明这个变量是环境变量,我们可以把拥有继承性的变量称为环境变量

查看系统的环境变量env或env | grep litao

将自定义变量变为系统的环境变量export 变量名:export litao=66666可以覆盖之前定义的变量,在子shell里面可以引用父shell定义的环境变量,在子shell里面创建的export环境变量在父shell里面不能引用

 

echo $PS1一级提示符[\u@\h \W]\$,可以更改^@^

echo $PS2二级提示符>

cat > a.txt << ok(此处写什么无所谓,只是开头和结尾的呼应)

>sdfa

>dfasfa

>ok回车就是写完了,这是非交互式的,可以写在脚本里面

 

位置变量:

[root@server scripts]# echo$PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

 

删除 yum remove 名子

 

PATH=$PATH:/usr/local/apache/bin临时生效,增加其他命令的目录,以便于可以直接使用命令

bc是计算器scale=2精确到两位小数,默认整除,ctrl+d是退出

2^15=32768

RANDOM产生随机数0~32768

原来RANDOM随机数是这样得来的,求余有规律,求余%5就是0~4,求余%3就是0~2,

永久生效,写到配置文件

echo $((7+8+8+7+9+11))可以计算,一个小括号是命令,两个小括号是计算

产生随机数0~4:

echo $((RANDOM%5)) 或  echo $[RANDOM%5]

产生随机数1~5:

echo $((RANDOM%5+1))  或 echo $[RANDOM%5+1]

 

4个环境变量配置文件 开机自动读取配置文件内容

/etc/profile

/etc/bashrc

~/.bashrc别名

~/.bash_profile是修改umask的

 

适用范围

/etc     对所有用户生效

~        对当前用户生效

 

登陆shell的类型

登陆shell     读4个环境变量的配置   输入用户名就是登陆

非登陆shell   只读2个bashrc文件   没有输入用户名就是非登陆
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值