技术圈开发者交流群:

磁盘阵列基本知识

基础知识

一、RAID的定义

是Redundant Array of Independent Disks(独立磁盘冗余阵列),RAID就是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来的一个硬盘组(逻辑硬盘)。

软RAID:是通过软件实现多块硬盘冗余的.

硬RAID是一般通过RAID卡来实现RAID的.

二、RAID0

image.png

 

三、RAID1

image.png

四、RDID5

image.png

 

五、RAID100+1

image.png

六、基本命令

1、创立Raid:

  Raid1 卷

mdadm -C /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

或mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1

  Radid5 卷

mdadm -C /dev/md5 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1

或mdadm -Cv /dev/md5 –l5 –n3 /dev/sdb1 /dev/sdc1 /dev/sdd1

 

2、查看raid

mdadm -D /dev/md0

mdadm  --examine /dev/sdb1

或:

mdadm  /dev/md0 --examine /dev/sdb1


3、停止raid 

mdadm -S /dev/md0 

 

4、激活raid 

mdadm -A /dev/md0 /dev/sdd1 /dev/sdc1 

 

5、替换设备: 

mdadm /dev/md0 -f /dev/sdb0 

把设备列为有问题 

mdadm /dev/md0 -r /dev/sdb0 

移除成员 

mdadm /dev/md0 -a /dev/sdc0 

添加成员 

mdadm /dev/md0  --re-add   /dev/sdc0 

重新把最近移除的RAID成员重新添加到RAID中 

 

6、扩容与缩减 

mdadm -G /dev/md0  -n4 

mdadm /dev/md5 -f /dev/sde1 

mdadm /dev/md5 -r /dev/sde1 

mdadm -G /dev/md5 --size=3

Linux 2017年08月30日 13008

LINUX进程管理

程序

保存在硬盘、光盘等介质中的可执行代码和数据

是静态保存的代码

进程

在CPU及内存中运行的程序代码

是动态执行的代码

父、子进程:每个进程可以创建一个或多个进程

 

ps命令

用途:查看静态的进程统计信息

格式:ps aux

      ps -elf

 

使用ps命令工具时,要注意选项前是否有”-“引导符,例如”e“和”-e”选项的含义是有区别的

ps命令结合“aux”选项使用时,将显示系统中所有的进程信息

    PID:该进程在系统中的数字ID号,在当前系统中是唯一的;    %CPU:CPU占用百分比;    %MEM:内存占用百分比

ps命令结合“-elf”选项使用时,将以长格式显示系统中所有的进程信息,包含更丰富的内容(其中PPID列表示进程的父进程的PID号)

 

image.png

定制属性

ps axo pid,comm,%cpu  --sort=%cpu | tail -1

 

进程状态

image.png

 

常见进程状态

image.png

 

进程优先级决定了CPU对进程调度顺序.在Linux中,进程优先级受nice值(-20-19)影响,默认值为0,nice值越小,则进程对cpu的使用权越具有优先性

调整进程优先级的命令:

nice(启动进程时使用)

nice  -n 5  vi

   renice (对于已经启动的进程)

                  renice 9 1236

 

top命令

用途:查看动态的进程排名信息

 

切换到虚拟机环境演示ps(包括ps aux、ps –elf的用法)、top命令的使用,并讲解输出结果中的要点(CPU占用、内存占用等)

从用途上对比ps、top两个命令的不同,可适当介绍top工具的命令按键:P、M、N、h、q

按P键根据CPU占用情况对进程列表进行排序

按M键根据内存占用情况进行排序

按N键根据启动时间进行排序

按h键可以获得top程序的在线帮助信息

按q键可以正常退出top程序

使用空格键可以强制更新进程状态显示

 

pgrep命令

用途:根据特定条件查询进程PID信息

 

[root@localhost ~]# pgrep "init"

1

[root@localhost ~]# pgrep -l "log"

2538 syslogd

2541 klogd

3221 login

[root@localhost ~]# pgrep -l -U teacher -t tty1

27483 bash

27584 vim

 

 

pgrep命令

用途:根据特定条件查询进程PID信息

 

[root@localhost ~]# pstree -aup

init,1

  ├─acpid,2866

  ├─atd,3060

  ├─auditd,2516

     ├─python,2518 /sbin/audispd

     └─{auditd},2517

……

[root@localhost ~]# pstree -ap teacher

bash,27483

  └─vim,27674 myfile.txt

 

手工启动

前台启动:用户输入命令,直接执行程序

后台启动:在命令行尾加入“&”符号

[root@localhost ~]# cp /dev/cdrom mycd.iso &

[1] 28454

 

调度启动

使用at命令,设置一次性计划任务

使用crontab命令,设置周期性计划任务

 

Ctrl+Z 组合键

将当前进程挂起,即调入后台并停止执行

jobs命令

查看处于后台的任务列表

fg命令

将处于后台的进程恢复到前台运行,需指定任务序号

[root@localhost ~]# jobs

[1]-   Stopped                 cp /dev/cdrom mycd.iso

[2]+  Stopped                 top

[root@localhost ~]# fg 1

 

Ctrl+C组合键

中断正在执行的命令

kill、killall命令

kill用于终止指定PID号的进程

killall用于终止指定名称的所有进程

-9 选项用于强制终止

[root@localhost ~]# pgrep -l "portmap"

2869  portmap

[root@localhost ~]# kill  -9  2869

[root@localhost ~]# killall -9 vim

[1]-  已杀死               /usr/bin/vim file1

[2]-  已杀死               /usr/bin/vim file2

 

pkill命令

用途:根据特定条件终止相应的进程

常用命令选项:

 -U:根据进程所属的用户名终止相应进程

 -t:根据进程所在的终端终止相应进程

[root@localhost ~]# pgrep –l -U "hackli"          

3045 bash

[root@localhost ~]# pkill -9 -U "hackli

[root@localhost ~]# pgrep -l U "hackli


Linux 2017年08月30日 37335

SELinux管理

DACMAC

1.DAC(Discretionary Access Control),主体是用户,访问目标文件由文件本身的权限决定,依进程运行时的用户身份决定其访问权限权限.

2.MAC(Mandatory Access Control),主体是进程,访问目标文件由策略决定.

 

SELinux配置文件  /etc/sysconfig/selinux

1.三种模式

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=enforcing           --selinux的工作状态

#     SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted            --指定保护级别

 

2.设置selinux的模式

    sestatus           查看SELinux状态

    semodule -l            查看selinux加载的内核模块

     getenforce          查询当前SELinx配置文件模式

    setenforce  1 | 0    Enforcing | Permissive

3.SElinux的五种元素

     ls -Z   查看文件的安全上下文

     ps -Z    查看进程的上下文

     id -Z    查看用户的上下文

     User:role:type:sensitivity:category

     User_u:object_r:tmp_t:s0:c0

4.selinux策略的控制文件  /selinux/booleans

     getsebool [ -a ] 查看某个(所有)控制策略启用情况

     setsebool [ -P ] 开启或者关闭某个策略,-P表示始终

5.例如查看samba的相关策略

    

image.png


Linux 2017年08月30日 17161

Server2016 安装IIS+PHP+Mysql教程

Server2016 安装IIS+PHP+Mysql教程


PHP安装与配置

php.ini-development为开发环境配置文件模板,生产环境请使用php.ini-production

  • 打开php.ini文件

    • 设置时区,找到 ;date.timezone = ,去掉前面的‘;’号,改为date.timezone = PRC

    • 开启常用扩展,找到; extension_dir = "ext",同样去掉前面的‘;’号。

    • 找到;extension=php_bz2.dll 该行,该行以下均是扩展,去掉前面的‘;’号即可。

    • 常用的扩展有:

    • extension=php_curl.dll

    • extension=php_fileinfo.dll

    • extension=php_gd2.dll

    • extension=php_mbstring.dll

    • extension=php_mysqli.dll

    • extension=php_openssl.dll

    • extension=php_pdo_mysql.dll

安装IIS

  • 开始菜单-服务器管理器-添加角色和功能-默认下一步下一步-选择角色(勾选Web服务器)-下一步-选择角色服务(勾选如图)-下一步-等待安装完成。  

配置IIS和PHP

  • 开始菜单-windows管理工具-Internet Information Services (IIS)管理器

  • 选择网站-处理程序映射-添加模块映射。   

  • 添加默认文档index.php 

安装Mysql,傻瓜式安装,这里就不啰嗦了

下载地址参考 https://dev.mysql.com/downloads/installer/

大功告成,验证时刻

  • 网站目录新建index.php 

  • 浏览器打开http://localhost/ ,见到下面的页面,就成功啦 


windows 2017年08月29日 43029

Hyper-v安装Server 2016 教程

Hyper-v安装Server 2016


windows10 开启hyper-v功能

  • 开始菜单 - windows系统 - 控制面板 - 程序 - 启用和关闭Windows功能 - 勾选“Hyper-V” - 确定 

打开hyper-v

  • 开始菜单 - windows管理工具 - hyper-V管理器

安装Server2016

接下来我就不多说了,和安装windows10差不多的步骤

如需要激活请参考 http://www.aiweibk.com/5315.html


windows 2017年08月27日 47226

PHP批量检查并清除bom头

Cannot send session cache limiter - headers already sent (output started at...) on line ...

在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)

<?php
if (isset($_GET['dir'])) {
    // config the basedir
    $basedir = $_GET['dir'];
} else {
    $basedir = '.';
}

$auto = 1;

checkdir($basedir);
function checkdir($basedir)
{
    if ($dh = opendir($basedir)) {
        while (($file = readdir($dh)) !== false) {
            if ($file != '.' && $file != '..') {
                if (!is_dir($basedir . "/" . $file)) {
                    // 如果是文件
                    echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " 
";
                } else {
                    $dirname = $basedir . "/" . $file; // 如果是目录
                    checkdir($dirname); // 递归
                }
            }
        }
        closedir($dh);
    }
}
function checkBOM($filename)
{
    global $auto;
    $contents   = file_get_contents($filename);
    $charset[1] = substr($contents, 0, 1);
    $charset[2] = substr($contents, 1, 1);
    $charset[3] = substr($contents, 2, 1);
    if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
        // BOM
        // 的前三个字符的ASCII
        // 码分别为
        // 239
        // 187
        // 191
        if ($auto == 1) {
            $rest = substr($contents, 3);
            rewrite($filename, $rest);
            return ("");
        } else {
            return ("");
        }
    } else {
        return ("BOM Not Found.");
    }

}
function rewrite($filename, $data)
{
    $filenum = fopen($filename, "w");
    flock($filenum, LOCK_EX);
    fwrite($filenum, $data);
    fclose($filenum);
}


PHP 2017年08月26日 20201

LINUX计划任务管理_AT与crontab

at命令

一次性计划任务

服务脚本名称:/etc/init.d/atd

设置格式:at  [HH:MM]  [yyyy-mm-dd] 

[root@localhost ~]# date
2011年 02月 21日 星期一 14:45:05 CST
[root@localhost ~]# at 14:55 2011-02-21
at> pgrep -U root | wc -l > /tmp/ps.root
at>
job 1 at 2011-02-21 14:55 
[root@localhost ~]# cat /tmp/ps.root
63

案例

在当天的21:30时自动关闭当前系统

root@localhost ~]# at 21:30
at> shutdown -h now
at>
job 7 at 2011-02-21 21:30

查看未执行任务列表

[root@localhost ~]# atq
1       2011-02-21 14:55 a root
2       2011-02-21 21:30 a root

删除第二条任务

[root@localhost ~]# atrm 2
[root@localhost ~]# atq
1       2011-02-21 14:55 a root

at计划任务 所在目录/var/spool/at

at的控制文件/etc/at.allow和 /etc/at.deny 

===================================================================================

crontab命令

按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务 

启用周期性任务有一个前提条件,即对应的系统服务crond必须已经运行

全局配置和系统默认配置中的内容一般不需要用户去修改,用户只需设置/var/spool/cron/目录下与本帐号同名的文件即可,接下来介绍如何设置用户自己的计划任务

[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

管理cron计划任务

编辑计划任务:crontab  -e  [-u  用户名]

查看计划任务:crontab  -l  [-u  用户名]

删除计划任务:crontab  -r  [-u  用户名]

 

用户只需执行“crontab -e”命令后会自动调用文本编辑器(默认为vi)并打开“/var/spool/cron/用户名”文件,无需手动指定文件位置

image.png

  • 时间数值的特殊表示方法

    • *       表示该范围内的任意时间

    • ,    表示间隔的多个不连续时间点

    • -       表示一个连续的时间范围

    • /       指定间隔的时间频率

  • 应用示例

    • 0  17        *  *  1-5        周一到周五每天17:00

    • 30  8        *  *  1,3,5          每周一、三、五的8点30分

    • 0  8-18/2        *  *  *          8点到18点之间每隔2小时

    • 0  *        */3  *  *              每隔3天

 

  • 示例1(root用户)

    • 每天早上7:50自动开启sshd服务,22点50时关闭

    • 每隔5天清空一次FTP服务器公共目录/var/ftp/pub

    • 每周六的7:30时,重新启动httpd服务

    • 每周一、三、五的17:30时,打包备份/etc/httpd目录

[root@localhost root]# crontab -e
50 7 * * *   /sbin/service  sshd  start
50 22 * * *   /sbin/service  sshd  stop
0 0 */5 * *   /bin/rm –rf /var/ftp/pub/*
30 7 * * 6   /sbin/service  httpd  restart
30 17 * * 1,3,5   /bin/tar  jcf  httpdconf.tar.bz2  /etc/httpd/
  • 示例2jerry用户)

    • 每周日晚上23:55时将“/etc/passwd文件的内容复制到宿主目录中,保存为pwd.txt文件

[root@localhost root]# crontab -e -u  jerry
55 23 * * 7   /bin/cp  /etc/passwd  /home/jerry/pwd.txt
  • 示例3

    • root用户查看自己的计划任务列表

    • 查看并删除jerry用户设置的计划任务

[root@localhost root]# crontab -l -u jerry
55 23 * * 7  /bin/cp /etc/passwd /home/jerry/pwd.txt
[root@localhost root]# crontab -r -u jerry
[root@localhost root]# crontab -l -u jerry
no crontab for jerry
[root@localhost root]#

Crontab安全性

默认情况下,所有用户都可使用cron工具,要限制对cron的访问,可以使用/etc/cron.allow与/etc/cron.deny文件。

1、这两个文件都不存在时,每个用户都可以访问cron工具。

2、若两个文件都存在,只有/etc/cron.allow中的用户可以访问cron工具,忽略/etc/cron.deny文件

3、如果/etc/deny文件不存在,则/etc/allow中的用户不可以访问cron工具。


Linux 2017年08月16日 20012

Centos搭建 NFS网络文件系统 教程

NFS服务器

1.安装nfs-utils 

  yum -y install nfs-utils

2.创建需要共享的文件或目录

  mkdir /test/share1 /test/share2 /test/share3

3.NFS配置文件

  vi /etc/exports

image.png

4 .启动相关服务

  service rpcbind start
  service nfs start

 5.关闭防火墙

   service iptables stop

6.查看当前主机的共享目录列表

  showmount -e   localhost
  exportfs -rv         使NFS服务器重新读取exports文件中的设置
  exports  -auv      停止当前主机中NFS服务器的所有目录输出


NFS客户端

1.安装nfs-utils

yum -y install nfs-utils

2 .启动相关服务

service rpcbind start
service nfs start

3.查看指定主机共享目录信息

showmount -e 192.168.8.241

image.png

 4.Linux客户端挂载NFS文件系统

image.png

5.系统启动自动挂载NFS文件系统

image.png

image.png

 6.重新读取fstab文件,或者重启计算机

mount -a

7.查看挂载信息

df -T


Linux 2017年08月16日 20075

PHP7.1中AES加密解密方法 mcrypt_module_open()替换方案


mcrypt 扩展已经过时了大约10年,并且用起来很复杂。因此它被废弃并且被 OpenSSL 所取代。 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。


PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt.

/**
 * [AesSecurity aes加密,支持PHP7.1]
 */
class AesSecurity
{
    /**
     * [encrypt aes加密]
     * @param    [type]                   $input [要加密的数据]
     * @param    [type]                   $key   [加密key]
     * @return   [type]                          [加密后的数据]
     */
    public static function encrypt($input, $key)
    {
        $data = openssl_encrypt($input, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
        $data = base64_encode($data);
        return $data;
    }
    /**
     * [decrypt aes解密]
     * @param    [type]                   $sStr [要解密的数据]
     * @param    [type]                   $sKey [加密key]
     * @return   [type]                         [解密后的数据]
     */
    public static function decrypt($sStr, $sKey)
    {
        $decrypted = openssl_decrypt(base64_decode($sStr), 'AES-128-ECB', $sKey, OPENSSL_RAW_DATA);
        return $decrypted;
    }
}


可据需求,自行改编。

PHP 2017年08月16日 413631

史上最全PHP常见开发工具 视频教程 文档资料

[PHP常见开发工具]

php开发工具众多,主要有两类,一类是普通文本编辑器,另一类是集成开发工具(IDE)。

普通文本编辑器:

    1、Sublime Text

    2、微软的跨平台代码编辑器 visual studio code

    3、Atom

    4、还有notepad++,editplus,vi等等不再列举

集成开发工具(IDE)

    1、zend官方的zend studio

    2、JetBrains 公司的PhpStom

    3、netbeans IED for php

    4、eclipse for php

    ……

[流行的MVC]

1、ThinkPHP 国人自己的

2、laravel 以优雅著称

3、Yii 快速、安全、专业 的 PHP 框架

4、zend framework  zend自家的

5、Yaf(Yet Another Framework)  高性能的C语言编写的框架

6、phalcon使用 C 扩展编写、针对高性能优化的 PHP 框架

7、CodeIgniter、CakePHP、Symfony 等等

[视频教程]

    1、慕课网-程序员的梦工厂

            慕课网(IMOOC)是IT技能学习平台。慕课网(IMOOC)提供了丰富的移动端开发、php开发、web前端、android开发以及html5等视频教程资源公开课。并且富有交互性及趣味    性,你还可以和朋友一起编程。

    2、网易云课堂 - 领先的实用技能学习平台

            云课堂是网易公司研发的一款大型在线教育平台服务,该平台面向学习者提供海量免费、优质课程,创新的个性化学习体验, 自由开放的交流互动环境。继网易公开课后,云课堂是网易公司在教育领域的又一重量级产品。

    3、腾讯课堂_专业的在线教育平台

            腾讯课堂-腾讯推出的专业在线教育平台,聚合大量优质教育机构和名师,下设职业培训、公务员考试、托福雅思、考证考级、英语口语、中小学教育等众多在线学习精品课程,打造老师在线上课教学、学生及时互动学习的课堂。腾讯课堂,学习成就梦想!

    4、极客学院IT在线教育平台-中国专业的IT职业在线教育平台

            极客学院作为中国专业IT职业在线教育平台,拥有海量高清IT职业课程,涵盖30+个技术领域,如Android,iOS ,Flash,Java,Python,HTML5,Swift,Cocos2dx等视频教程.根据IT在线学习特点,极客学院推出IT学习知识体系图,IT职业学习实战路径图,帮助IT学习者从零基础起步,结合IT实战案例演练,系统学习,助你快速成为IT优秀技术人才!

    5、优酷学堂

            优质课程、智能问答、趣味实践、随心笔记、教育、优酷公开课、计算机开发、交互视觉设计、Udacity、it、互联网、会计、视频教程、交流互动、免费、名师、实用、培训


PHP 2017年06月10日 49543

排行

解决方案

网站建设

专业企业官网建设,塑造企业形象,传递企业价值

系统开发

系统软件开发,用心思考,用心设计,用心体验

技术支撑

打破技术瓶颈,让不堪重负的项目起死回生

业务中台

构建全渠道一体化运营能力,实现全链路数字化

文案策划

文案撰写、营销策划,专注品牌全案

新媒体运营

一站式解决企业互联网营销痛点和难题

以技术的力量,改变互联网

联系我们
鄂ICP备19028750号-1 @copyright 2024 tech1024.com