ssh-keygen -t rsa
可设置密码,也可一路回车就行
scp ~/.ssh/id_rsa.pub root@服务器IP地址:~/.ssh/authorized_keys
拷贝公钥文件至服务器,会提示输入服务器密码
ssh-keygen -t rsa
可设置密码,也可一路回车就行
scp ~/.ssh/id_rsa.pub root@服务器IP地址:~/.ssh/authorized_keys
拷贝公钥文件至服务器,会提示输入服务器密码
基础知识
一、RAID的定义
是Redundant Array of Independent Disks(独立磁盘冗余阵列),RAID就是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来的一个硬盘组(逻辑硬盘)。
软RAID:是通过软件实现多块硬盘冗余的.
硬RAID:是一般通过RAID卡来实现RAID的.
二、RAID0
三、RAID1
四、RDID5
五、RAID10(0+1)
六、基本命令
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
程序
保存在硬盘、光盘等介质中的可执行代码和数据
是静态保存的代码
进程
在CPU及内存中运行的程序代码
是动态执行的代码
父、子进程:每个进程可以创建一个或多个进程
ps命令
用途:查看静态的进程统计信息
格式:ps aux
ps -elf
使用ps命令工具时,要注意选项前是否有”-“引导符,例如”e“和”-e”选项的含义是有区别的
ps命令结合“aux”选项使用时,将显示系统中所有的进程信息
PID:该进程在系统中的数字ID号,在当前系统中是唯一的; %CPU:CPU占用百分比; %MEM:内存占用百分比
ps命令结合“-elf”选项使用时,将以长格式显示系统中所有的进程信息,包含更丰富的内容(其中PPID列表示进程的父进程的PID号)
定制属性
ps axo pid,comm,%cpu --sort=%cpu | tail -1
进程状态
常见进程状态
进程优先级决定了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”
DAC与MAC
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的相关策略
下载安装VC14库,http://www.microsoft.com/en-us/download/details.aspx?id=48145
下载php,这里以php7.1为例,下载地址 http://windows.php.net/download#php-7.1 ,选择 VC14 x64 Non Thread Safe 。
解压到需要安装的目录,复制php.ini-development为php.ini
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
浏览器打开http://localhost/ ,见到下面的页面,就成功啦
windows10 开启hyper-v功能
打开hyper-v
开始菜单 - windows管理工具 - hyper-V管理器
安装Server2016
如需Server2016 iso镜像,请参考 http://www.aiweibk.com/6440.html
启动虚拟机
连接虚拟机
接下来我就不多说了,和安装windows10差不多的步骤
如需要激活请参考 http://www.aiweibk.com/5315.html
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); }
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/用户名”文件,无需手动指定文件位置
时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
应用示例
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/
示例2(jerry用户)
每周日晚上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工具。
NFS服务器
1.安装nfs-utils
yum -y install nfs-utils
2.创建需要共享的文件或目录
mkdir /test/share1 /test/share2 /test/share3
3.NFS配置文件
vi /etc/exports
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
4.Linux客户端挂载NFS文件系统
5.系统启动自动挂载NFS文件系统
6.重新读取fstab文件,或者重启计算机
mount -a
7.查看挂载信息
df -T
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; } }
可据需求,自行改编。
专业企业官网建设,塑造企业形象,传递企业价值
系统软件开发,用心思考,用心设计,用心体验
打破技术瓶颈,让不堪重负的项目起死回生
构建全渠道一体化运营能力,实现全链路数字化
文案撰写、营销策划,专注品牌全案
一站式解决企业互联网营销痛点和难题
以技术的力量,改变互联网
联系我们