1,用户组

  1. 添加用户
  2. useradd
  3. -u UID
  4. -o
  5. -g 指定 GID或组名
  6. -c 注释信息
  7. -d 家目录
  8. -s shell
  9. -G 附加组
  10. -r 系统用户
  11. -m 家目录,系统用户
  12. -M 不创建家目录,非系统用户
  13. newusers file : 批量创建用户,需要事先准备好跟passwd格式一样的文件
  14. chpasswd : 批量修改用户口令,文件格式:用户名:口令
  15. passwd
  16. -l : 锁定指定的用户
  17. -u : 解锁指定的用户
  18. -e :强制用户下次登录时修改密码
  19. usermod
  20. -u UID
  21. -g GID
  22. -G 新附加组 -a
  23. -d HOME
  24. -l 新家目录
  25. -U 解锁
  26. -L 锁定
  27. -e YYYY-MM-DD: 指明用户账号过期日期
  28. --f INACTIVE: 设定非活动期限
  29. -d DIR : 修改家目录
  30. -m : 配合-d,修改并且移动数据到新的家目录
  31. userdel
  32. -r 删除用户家目录
  33. id [OPTION]... [USER]
  34. -n: 显示名称,需配合ugG使用
  35. -G: 显示用户所属的组的ID
  36. -u UID
  37. -g GID
  38. 切换用户方式
  39. su :非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
  40. su - :登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
  41. change 修改密码策略
  42. -d LAST_DAY
  43. -E --expiredate EXPIRE_DATE
  44. -I --inactive INACTIVE
  45. -m --mindays MIN_DAYS
  46. -M --maxdays MAX_DAYS
  47. -W --warndays WARN_DAYS
  48. chage -d 0 tom 下一次登录强制重设密码
  49. chage -m 0 M 42 W 14 I 7 tom
  50. chage -E 2016-09-10 tom
  51. groupadd
  52. -g GID
  53. -r 系统组
  54. groupmod [option] GROUP
  55. -n group_name : 修改组名
  56. -g GID : 修改GID
  57. 修改文件属性
  58. chown -R 递归
  59. umask
  60. 可以用来保留在创建文件权限
  61. 新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1
  62. 新建目录的默认权限: 777-umask
  63. 非特权用户umask 002
  64. rootumask 022
  65. 对于文件的权限:
  66. r : 查看
  67. w : 修改
  68. x : 运行
  69. 对于目录的权限:
  70. r : 查看目录内文件列表
  71. w : 创建和删除文件(需要x权限)
  72. x : cd进目录
  73. 特殊权限
  74. SUID
  75. SGID
  76. 默认情况下,用户创建文件时,其属组为此用户所属的主组
  77. 一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组
  78. Sticky
  79. 具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
  80. 在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
  81. SUID: user,占据属主的执行权限位
  82. s:属主拥有x权限
  83. S:属主没有x权限
  84. SGID: group,占据属组的执行权限位
  85. s group拥有x权限
  86. Sgroup没有x权限
  87. Sticky: other,占据other的执行权限位
  88. tother拥有x权限
  89. Tother没有x权限
  90. 文件特殊属性
  91. chattr +i 不能删除,改名,更改
  92. chattr +a 只能追加内容
  93. lsattr 显示特定属性
  94. acl 访问控制列表
  95. ACLAccess Control List,实现灵活的权限管理
  96. CentOS7 默认创建的xfsext4文件系统具有ACL功能
  97. CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
  98. tune2fs o acl /dev/sdb1
  99. mount o acl /dev/sdb1 /mnt/test
  100. ACL生效顺序:所有者>(自定义用户>所属组,自定义组)>其他人
  101. 括号外的用户不收mask影响
  102. mount -o acl /directory
  103. getfacl file |directory
  104. setfacl -m u:wang:rwx file|directory
  105. setfacl -Rm g:sales:rwX directory
  106. setfacl -M file.acl file|directory
  107. setfacl -m g:salesgroup:rw file| directory
  108. setfacl -m d:u:wang:rx directory
  109. setfacl -x u:wang file |directory
  110. setfacl -X file.acl directory
  111. 通过ACL赋予目录默认x权限,目录内文件也不会继承x权限
  112. base ACL 不能删除
  113. setfacl -k dir 删除默认ACL权限
  114. setfacl b file1清除所有ACL权限
  115. getfacl file1 | setfacl --set-file=- file2 复制file1acl权限给file2
  116. mask只影响除所有者和other的之外的人和组的最大权限
  117. Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(EffectivePermission)
  118. 用户或组的设置必须存在于mask权限设定范围内才会生效
  119. setfacl -mmask::rx file
  120. --set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以
  121. XFS文件系统默认支持ACL,其他低级的需要文件系统支持后,挂载时指定

2,脚本基础

变量命令

  1. 1、不能使程序中的保留字:例如if, for
  2. 2、只能使用数字、字母及下划线,且不能以数字开头
  3. 3、见名知义
  4. 4、统一命名规则:驼峰命名法
  5. Shell中命名建议规则:
  6. 1、变量名大写
  7. 2、局部变量小写
  8. 3、函数名小写
  9. 4、用英文名字,并体现出实际作用
  10. 根据变量的生效范围等标准划分下面变量类型
  11. 局部变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,
  12. 包括当前shell的子shell进程均无效
  13. 环境变量:生效范围为当前shell进程及其子进程
  14. 本地变量:生效范围为当前shell进程中某代码片断,通常指函数
  15. 位置变量:$1, $2, ...来表示,用于让脚本在脚本代码中调用通过命令行传
  16. 递给它的参数
  17. 特殊变量:$?, $0, $*, $@, $#,$$
  18. $$ shell 本身的pid当前进程号
  19. $! shell 最后运行的后台processs pid
  20. set
  21. -e : 如果一个命令返回一个非0退出状态值(失败),就退出。 
  22.        -n : 不需要执行脚本只是检查语法结构,返回所有的语法错误信息。      
  23.   -u : 置换时把未设置的变量看作出错。    
  24.     -v : 当读入shell输入行时,把它们显示出来。     
  25.   -x : 执行命令时,把命令和它们的参数显示出来

变量赋值:name=‘value’

可以使用引用value

(1) 可以是直接字串: name=“root"

(2) 变量引用: name="$USER"

(3) 命令引用: name=COMMAND

name=$(COMMAND)

  1. 变量引用:${name} 或者 $name
  2. " " 弱引用,其中的变量引用会被替换为变量值
  3. ' ' 强引用,其中的变量引用不会被替换为变量值,而保持原字符串
  4. 显示已定义的所有变量:set
  5. 删除变量:unset name
  6. 只读变量:只能声明,但不能修改和删除
  7. 声明只读变量:
  8. readonly name
  9. declare -r name
  10. 查看只读变量:
  11. readonly -p

变量作用域

  1. local
  2. export 全局
  3. 新开子shell 运行脚本
  4. source 脚本执行,在本sehll

命令行扩展

$() 或 ``

声明变量

readonly name

declare -r name

-i 整型

-x 环境变量

readonly -p

撤销变量

unset var

unset -f 函数名

位置变量

退出码

bash自定义退出状态码

exit [n]:自定义退出状态码

注意:脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命令后面的数字

注意:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码

算术运算

只支持整数运算

let

expr

ab=expr $a + $b

$[ ]

$(( ))

bc支持小数

echo "5*7 .3" | bc

条件测试

条件测试

真 返回0

假 返回1

逻辑运算

与 -a &&

或 -o ||

非 !

a 使用 []

[ -a ]

&& 使用 [[ ]]

[[ && ]]

[ ] && [ ]

测试命令

test EXPRESSION

[ EXPRESSION ]

[[ EXPRESSION ]]

1,使用-n -z 判断 变量是否为空

[ ] 需要在变量外侧加" " [[ ]] 不必



注意:EXPRESSION前后必须有空白字符

命令组合

( command;command ) 开启子shell

{ command ; command ; } 本shell下执行

bash的数值测试

-v VAR

变量VAR是否设置

数值测试

-gt 是否大于-ge 是否大于等于-eq 是否等于-ne 是否不等于-lt 是否小于-le 是否小于等于

shell 变量字符串

${parameter}

${#parameter} 字符长度

${parameter:offset} 从offset 之后开始提取子串到结尾

${parameter:offset:length} 从offset 之后开始提取长度为length的字串

${parameter#word} 从${parameter}开头开始删除最短匹配的word字符串

${parameter##word} 从${parameter}开头开始删除最长匹配的word字符串

${parameter%word} 从${parameter}结尾开始删除最短匹配的word字符串

${parameter%%word} 从${parameter}结尾开始删除最长匹配的word字符串

${parameter/pattern/string } string 代替第一个匹配的pattern

${parameter//pattern/string } 所有

字符长度

管道echo ${char} |wc -L

expre length "${char}"

特殊扩展变量

${parameter:-word} 如果parameter变量为空或未赋值,则返回word字符串并代替变量值

${parameter:=word} 如果parameter变量为空或未赋值 ,则设置为word并返回,位置变量与特殊变量不适用

${parameter:?word} 如果parameter变量为空或未赋值,word作为标准错误输出,否则输出变量值

${parameter:+word} 如果parameter变量为空或未赋值,什么都不做,否则word的值返回

数学运算

!/bin/bash

no1=4;

no2=5;

let result=no1+no2

echo $result

result=$[ no1 + no2 ]

result=$[ $no1 + 5 ]

也可以使用(()),但使用(())时,变量名之前需要加上$:

数组

$ ass_array=([index1]=val1 [index2]=val2)

使用独立的“索引-值”进行赋值:

$ ass_array[index1]=val1

$ ass_array'index2]=val2

数组索引

$ echo ${!array_var[]}

$ echo ${!array_var[@]

$ echo ${!fruits_value[
]}

  1. while read n ;do
  2. echo " name is $n "
  3. done < name #文本文件每行
  4. cat student_name.txt | while read name ; do
  5. useradd $name
  6. echo $name is created
  7. done

find

find /var -not ( -user root -o -user lp -o -user gdm )

与xargs 配合

压缩

compress .Z

gzip .gz

bzip2 .bz2

xz .xz

zip .

tar

cpio

-j: bzip2, -z: gzip, -J: xz

软硬符号链接

df -i --print-type

符号链接和硬链接的区别?

符号链接:

软链接有自己的文件属性及权限等;

可对不存在的文件或目录创建软链接;

软链接可交叉文件系统;

软链接可对文件或目录创建;

创建软链接时,链接计数 i_nlink 不会增加;

删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

硬链接:

文件有相同的 inode 及 data block;

只能对已存在的文件进行创建;

不能交叉文件系统进行硬链接的创建;

不能对目录进行创建,只可对文件创建;

删除一个硬链接文件并不影响其他有相同 inode 号的文件。

每个文件存在两个计数器:i_count 与 i_nlink,即引用计数与硬链接计数。结构体 inode 中的 i_count 用于跟踪文件被访问的数量,而 i_nlink 则是上述使用 ls -l 等命令查看到的文件硬链接数。或者说 i_count 跟踪文件在内存中的情况,而 i_nlink 则是磁盘计数器。当文件被删除时,则 i_nlink 先被设置成 0。文件的这两个计数器使得 Linux 系统升级或程序更新变的容易。系统或程序可在不关闭的情况下(即文件 i_count 不为 0),将新文件以同样的文件名进行替换,新文件有自己的 inode 及 data block,旧文件会在相关进程关闭后被完整的删除

创建软链接是以相对路径创建时,该链接会在当前目录下寻找相同文件名的文件,如果无法找到,该链接失效。链接文件有自己的节点数据。

其他

[abc.,f]单个字符选择

{ad,ch } 符号扩展 字符串选择

basename dirname

变量扩展 :变量存在与否

${待测变量-默认值} 变量不存在,返默认值,存在返其值

${待测变量:-默认值} 变量不存在或为空,传后值

${待测变量:=默认值} 变量不在或空 变量设为默认值

echo 默认换行 -n 取消换行 -e 使特殊字符起作用

: 传回真值0 :> test.txt 建立空文件

. source 在现行shell环境中执行脚本

set 设定bash shell 属性 显示变量和函数内容

set -o emacs 打开命令行修改模式

shopt 设定bash shell 行为模式

-s -u -o -q

read 没指定接收变量,默认REPLY -p 提示信息

read LINE < dataf1 dataf1的第一行赋值给LINE

read f f2 f3 f4 < dataf1 dataf1的第一行字段赋值

如果各字段以:分开

IFS=":"

read f1 f2 f3 f4 f5 f6 f7 < /etc/passwd

exec 执行指定程序取代原来shell 或转向操作生效

exec 程序或命令 取代当前shell 环境

exec < datafile 凡是由标准输入读取数据的,改向datafile 读取

eval 读取变量内容并执行

listlog="ls -la /var/log/*.log"

eval $listlog

uniq 已排序好的重复行删除

cut -c2 f1 抽取f1 每一行的第二个字符

cut -c3-10

-c9-

paste tr

script log.text 记录命令的执行信息 exit 退出

${变量}获取变量值

单一执行 echo 会换行

unset -v变量 -f函数

单引号 所见即所得

正则表达式

[0-9]匹配0-9 \d 阿拉伯数字 \D 非数字字符 % | . 匹配任意字符

()捕获分组 引用\1 {3}出现次数 + 一个或多个 * 零个或多个

其他


  1. 本文是介绍使用源码编译安装,包括具体的编译参数信息。
  2. 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好。
  3. 安装make
  4. yum -y install gcc automake autoconf libtool make
  5. 安装g++:
  6. yum install gcc gcc-c++
  7.  
  8. 一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。
  9. 1.选定源码目录
  10. 可以是任何目录,本文选定的是/usr/local/src
  11. cd /usr/local/src
  12. 2.安装PCRE
  13. ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:
  14.  
  15. cd /usr/local/src
  16. wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
  17. tar -zxvf pcre-8.39.tar.gz
  18. cd pcre-8.39
  19. ./configure
  20. make && make install
  21. 3.安装zlib
  22. http://zlib.net/zlib-1.2.11.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:
  23.   cd /usr/local/src
  24.   wget http://zlib.net/zlib-1.2.11.tar.gz 
  25.   tar -zxvf zlib-1.2.11.tar.gz 
  26.   cd zlib-1.2.11
  27.   ./configure 
  28.   make && make install
  29. 4.安装ssl(某些vps默认没装ssl)
  30. cd /usr/local/src
  31. wget https://www.openssl.org/source/openssl-1.1.0b.tar.gz
  32. tar -zxvf openssl-1.1.0b.tar.gz
  33. ./config
  34. make && make install
  35.  
  36. 5.安装nginx
  37. 以安装最新稳定版ngixn-1.10.2为例子,其他版本也一样。
  38. 下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:
  39. cd /usr/local/src
  40. wget http://nginx.org/download/nginx-1.10.2.tar.gz
  41. tar -zxvf nginx-1.10.2.tar.gz
  42. cd nginx-1.10.2
  43. 1、添加nginx用户和用户组
  44. groupadd -r nginx
  45. useradd -r -g nginx nginx
  46. 你可能收到提示已经有了nginx 用户和组这个无所谓有了更好。
  47.  
  48. 2、配置nginx安装参数
  49.  
  50. ./configure \
  51. --prefix=/usr/local/nginx \
  52. --sbin-path=/usr/local/nginx/sbin/nginx \
  53. --conf-path=/usr/local/nginx/nginx.conf \
  54. --pid-path=/usr/local/nginx/nginx.pid \
  55. --user=nginx \
  56. --group=nginx \
  57. --with-http_ssl_module \
  58. --with-http_flv_module \
  59. --with-http_mp4_module \
  60. --with-http_stub_status_module \
  61. --with-http_gzip_static_module \
  62. --http-client-body-temp-path=/var/tmp/nginx/client/ \
  63. --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  64. --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  65. --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
  66. --http-scgi-temp-path=/var/tmp/nginx/scgi \
  67. --with-pcre=/usr/local/src/pcre-8.39 \
  68. --with-zlib=/usr/local/src/zlib-1.2.11 \
  69. --with-openssl=/usr/local/src/openssl-1.1.0b \
  70. 注:当前所在目录一定要是/usr/local/src/nginx-1.10.2
  71. --with-pcre=/usr/local/src/pcre-8.39 指的是pcre-8.39 的源码路径。
  72. --with-zlib=/usr/local/src/zlib-1.2.11 指的是zlib-1.2.11 的源码路径。
  73. --with-openssl=/usr/local/src/openssl-1.1.0b 指的是openssl-1.1.0b 的源码路径。
  74. 编译安装
  75. 1 make && make install
  76.  
  77. 安装成功后 /usr/local/nginx 目录下如下:
  78.  
  79. 3、启动
  80. 确保系统的 80 端口没被其他程序占用,运行/usr/local/nginx/sbin/nginx 命令来启动 Nginx
  81. netstat -ano|grep 80
  82. /usr/local/nginx/sbin/nginx
  83. 可能会出现mkdir /var/tmp/nginx/client failed的提示
  84. 这时手动创建就可以了 mkdir -p /var/tmp/nginx/client就可以了
  85. 打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功
  86. ps:
  87. nginx成功运行后,通过ip地址无法访问服务器 则可能是防火墙的问题 需要开放80端口或关闭防火墙
  88. 开启80端口 
  89. firewall-cmd --zone=public --add-port=80/tcp --permanent 
  90. 命令含义: 
  91. --zone #作用域 
  92. --add-port=80/tcp #添加端口,格式为:端口/通讯协议 
  93. --permanent #永久生效,没有此参数重启后失效 
  94. 重启防火墙 
  95. firewall-cmd --reload
  96. 或者永久关闭防火墙
  97. systemctl stop firewalld.service  //停止防火墙
  98. systemctl disable firewalld.service //不再开机停止运行防火墙
  99.  
  100. nginx编译选项
  101. make是用来编译的,它从Makefile中读取指令,然后编译。
  102. make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
  103. configure命令是用来检测你的安装平台的目标特征的。它定义了系统的各个方面,包括nginx的被允许使用的连接处理的方法,比如它会检测你是不是有CCGCC,并不是需要CCGCC,它是个shell脚本,执行结束时,它会创建一个Makefile文件。nginxconfigure命令支持以下参数:
  104. --prefix=path    定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx
  105. --sbin-path=path 设置nginx的可执行文件的路径,默认为  prefix/sbin/nginx.
  106. --conf-path=path  设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
  107. --pid-path=path  设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 nginx.conf配置文件中使用 PID指令。默认情况下,文件名 prefix/logs/nginx.pid.
  108. --error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 error_log指令。默认情况下,文件名 prefix/logs/error.log.
  109. --http-log-path=path  设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 access_log指令。默认情况下,文件名 prefix/logs/access.log.
  110. --user=name  设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody
  111. --group=name  设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
  112. --with-select_module --without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueueepollrtsig或/dev/poll
  113. --with-poll_module --without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueueepollrtsig或/dev/poll
  114. --without-http_gzip_module  不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
  115. --without-http_rewrite_module  不编译重写模块。编译并运行此模块需要PCRE库支持。
  116. --without-http_proxy_module  不编译http_proxy模块。
  117. --with-http_ssl_module  使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
  118. --with-pcre=path  设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.30)需要从PCRE网站下载并解压。其余的工作是Nginx的./ configuremake来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
  119. --with-pcre-jit —编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
  120. --with-zlib=path —设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 - 1.2.5)的并解压。其余的工作是Nginx的./ configuremake完成。ngx_http_gzip_module模块需要使用zlib
  121. --with-cc-opt=parameters  设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:--with-cc-opt="-I /usr/local/include。.如需要需要增加 select()支持的文件数量:--with-cc-opt="-D FD_SETSIZE=2048".
  122. --with-ld-opt=parameters —设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:--with-ld-opt="-L /usr/local/lib".
  123. php-fpm安装配置
  124. nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。
  125. nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx
  126. 本文以php-fpm为例介绍如何使nginx支持PHP
  127. 一、编译安装php-fpm
  128. 什么是PHP-FPM
  129. PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.
  130. PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
  131. 新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM,其它参数都是配置php的,具体选项含义可以查看这里。
  132. 安装前准备
  133. 添加 epel 源
  134. # rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  135. 安装依赖
  136. # yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-devel
  137. 1 yum -y install gcc gcc-c++ glibc
  138. yum -y install libmcrypt-devel mhash-devel libxslt-devel \
  139. libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
  140. zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \
  141. ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \
  142. krb5 krb5-devel libidn libidn-devel openssl openssl-devel
  143.  
  144. cd /usr/local/src
  145. wget http://au1.php.net/get/php-7.1.10.tar.gz/from/this/mirror
  146. tar -zvxf php-7.1.10.tar.gz
  147. cd php-7.1.10
  148. ./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt \
  149. --enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath \
  150. --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \
  151. --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
  152. --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli \
  153. --with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar
  154. make && make install
  155. 以上就完成了php-fpm的安装
  156. 下面是对php-fpm运行用户进行设置
  157. 1、为php提供配置文件
  158. 1 cp php.ini-production /usr/local/php/etc/php.ini
  159. 2、为php-fpm提供配置文件
  160.  
  161. 1 cd /usr/local/php
  162. 2 cp etc/php-fpm.conf.default etc/php-fpm.conf
  163. 3 vim etc/php-fpm.conf
  164. 修改
  165. user = www
  166. group = www
  167. 如果www用户不存在,那么先添加www用户
  168. 1 groupadd www
  169. 2 useradd -g www www
  170. 修改
  171. pm.max_children = 150
  172. pm.start_servers = 8
  173. pm.min_spare_servers = 5
  174. pm.max_spare_servers = 10
  175. pid = /usr/local/php/var/run/php-fpm.pid 
  176.  
  177. 配置文件
  178. # cp php.ini-production /usr/local/php/etc/php.ini
  179. # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
  180. # cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
  181. # cp -R ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  182.  
  183. 需要注意的是php7中www.conf这个配置文件配置phpfpm的端口号等信息,如果你修改默认的9000端口号需在这里改,再改nginx的配置
  184. 重启
  185. # killall php-fpm
  186. #  service php-fpm restart
  187.  
  188. 使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
  189. 1 ps aux | grep php-fpm
  190. 3、nginx和php-fpm整合
  191. 编辑/usr/local/nginx/nginx.conf
  192. 1 vim /usr/local/nginx/nginx.conf
  193. user www www;
  194. worker_processes auto;
  195. #error_log /usr/local/wwwlogs/error_nginx.log crit;
  196. pid /usr/local/nginx/nginx.pid;
  197. worker_rlimit_nofile 51200;
  198. events {
  199.   use epoll;
  200.   worker_connections 51200;
  201.   multi_accept on;
  202. }
  203. http {
  204.   include mime.types;
  205.   default_type application/octet-stream;
  206.   client_header_buffer_size 32k;
  207.   large_client_header_buffers 4 32k;
  208.   client_max_body_size 1024m;
  209.   sendfile on;
  210.   tcp_nopush on;
  211.   keepalive_timeout 120;
  212.   server_tokens off;
  213.   tcp_nodelay on;
  214.   fastcgi_connect_timeout 300;
  215.   fastcgi_send_timeout 300;
  216.   fastcgi_read_timeout 300;
  217.   fastcgi_buffer_size 64k;
  218.   fastcgi_buffers 4 64k;
  219.   fastcgi_busy_buffers_size 128k;
  220.   fastcgi_temp_file_write_size 128k;
  221.   #Gzip Compression
  222.   gzip on;
  223.   gzip_buffers 16 8k;
  224.   gzip_http_version 1.1;
  225.   gzip_min_length 256;
  226.   gzip_proxied any;
  227.   gzip_vary on;
  228.   gzip_types
  229.   text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
  230.   text/javascript application/javascript application/x-javascript
  231.   text/x-json application/json application/x-web-app-manifest+json
  232.   text/css text/plain text/x-component
  233.   font/opentype application/x-font-ttf application/vnd.ms-fontobject
  234.   image/x-icon;
  235.   gzip_disable "MSIE [1-6]\.(?!.*SV1)";
  236.   #If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency.
  237.   open_file_cache max=1000 inactive=20s;
  238.   open_file_cache_valid 30s;
  239.   open_file_cache_min_uses 2;
  240.   open_file_cache_errors on;
  241.   ######################## default ############################
  242.   server {
  243.     listen 80;
  244.     server_name _;
  245.     #access_log /usr/local/wwwlogs/access_nginx.log combined;
  246.     root /home/www/default;
  247.     index index.html index.htm index.php;
  248.     location /nginx_status {
  249.       stub_status on;
  250.       access_log off;
  251.       allow 127.0.0.1;
  252.       deny all;
  253.     }
  254.     location ~ [^/]\.php(/|$) {
  255.       #fastcgi_pass remote_php_ip:9000;
  256.       fastcgi_pass unix:/dev/shm/php-cgi.sock;
  257.       fastcgi_index index.php;
  258.       include fastcgi.conf;
  259.     }
  260.     #location ~ \.php$ {
  261.       # root /home/www;
  262.       # fastcgi_pass 127.0.0.1:9000;
  263.       # fastcgi_index index.php;
  264.       # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  265.       # include fastcgi_params;
  266.     #}
  267.     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
  268.       expires 30d;
  269.       access_log off;
  270.     }
  271.     location ~ .*\.(js|css)?$ {
  272.       expires 7d;
  273.       access_log off;
  274.     }
  275.   }
  276.   ########################## vhost #############################
  277.   include vhost/*.conf;
  278. }
  279.  
  280. 项目路径
  281. 1 mkdir /usr/local/nginx/vhost
  282. 2 touch www.qyi.com.conf
  283. 3 vim www.qyi.com.conf
  284. server {
  285.   charset utf-8;
  286.   client_max_body_size 200M;
  287.   listen 80;
  288.   #listen [::]:80 default_server ipv6only=on; ## listen for ipv6
  289.   listen 443 ssl;
  290.   # server_name localhost;
  291.   # ssl on;
  292.   ssl_certificate /usr/local/ssl/beta-v2.crt;
  293.   ssl_certificate_key /usr/local/ssl/beta-v2.key;
  294.   ssl_session_timeout 5m;
  295.   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  296.   ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:-LOW:!aNULL:!eNULL;
  297.   ssl_prefer_server_ciphers on;
  298.   server_name www.qyi.com;
  299.   root /home/www/www.qyi.com;
  300.   #access_log /home/www/www.qyi.com/advanced.access.log main buffer=50k;
  301.   error_log /usr/local/nginx/logs/bella.error.log warn;
  302.   location / {
  303.     root /home/www/www.qyi.com/frontend/web;
  304.     try_files $uri /frontend/web/index.php?$args;
  305.     # avoiding processing of calls to non-existing static files by Yii
  306.     location ~ \.(js|css|ttf|woff|woff2|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
  307.       access_log off;
  308.       expires 360d;
  309.       try_files $uri =404;
  310.     }
  311.   }
  312.   location /admin {
  313.     alias /home/www/www.qyi.com/backend/web;
  314.     rewrite ^(/admin)/$ $1 permanent;
  315.     try_files $uri /backend/web/index.php?$args;
  316.   }
  317.   # avoiding processing of calls to non-existing static files by Yii
  318.   location ~ ^/admin/(.+\.(js|css|ttf|woff|woff2|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar))$ {
  319.     access_log off;
  320.     expires 360d;
  321.     rewrite ^/admin/(.+)$ /backend/web/$1 break;
  322.     rewrite ^/admin/(.+)/(.+)$ /backend/web/$1/$2 break;
  323.     try_files $uri =404;
  324.   }
  325.   location /v1 {
  326.     alias /home/www/www.qyi.com/api/v1/web;
  327.     rewrite ^(/v1)/$ $1 permanent;
  328.     try_files $uri /api/v1/web/index.php?$args;
  329.   }
  330.   location /v2 {
  331.     alias /home/www/www.qyi.com/api/v2/web;
  332.     rewrite ^(/v2)/$ $1 permanent;
  333.     try_files $uri /api/v2/web/index.php?$args;
  334.   }
  335.   location ~ \.php$ {
  336.     include fastcgi_params;
  337.     # check your /etc/php5/fpm/pool.d/www.conf to see if PHP-FPM is listening on a socket or port
  338.     #fastcgi_pass unix:/var/run/php5-fpm.sock; ## listen for socket
  339.     #fastcgi_pass 127.0.0.1:9000; ## listen for port
  340.     #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  341.     #try_files $uri =404;
  342.     fastcgi_pass unix:/dev/shm/php-cgi.sock;
  343.     fastcgi_index index.php;
  344.     proxy_set_header X-Real-IP $remote_addr;
  345.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  346.     include fastcgi.conf;
  347.   }
  348.   #error_page 404 /404.html;
  349.   location = /requirements.php {
  350.     deny all;
  351.   }
  352.   location = /palmobo.net.html{
  353.     try_files $uri =404;
  354.   }
  355.   location ~ \.(ht|svn|git) {
  356.     deny all;
  357.   }
  358. }
  359.  
  360. phpmyadmin路径
  361. 1 touch www.mysql.com.conf
  362. 2 vim www.mysql.com.conf
  363. server {
  364.   listen 80;
  365.   server_name www.mysql.com;
  366.   access_log off;
  367.   index index.html index.htm index.php;
  368.   #include /usr/local/nginx/vhost/www.mysql.com.conf;
  369.   root /home/www/www.mysql.com;
  370.   location ~ [^/]\.php(/|$) {
  371.     #fastcgi_pass remote_php_ip:9000;
  372.     fastcgi_pass unix:/dev/shm/php-cgi.sock;
  373.     fastcgi_index index.php;
  374.     include fastcgi.conf;
  375.   }
  376.   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
  377.     expires 30d;
  378.     access_log off;
  379.   }
  380.   location ~ .*\.(js|css)?$ {
  381.     expires 7d;
  382.     access_log off;
  383.   }
  384. }

其他

  1. #!/bin/sh
  2. # desc: setup linux system security
  3. #设置账号
  4. passwd -l xfs
  5. passwd -l news
  6. passwd -l nscd
  7. passwd -l dbus
  8. passwd -l vcsa
  9. passwd -l games
  10. passwd -l nobody
  11. passwd -l avahi
  12. passwd -l haldaemon
  13. passwd -l gopher
  14. passwd -l ftp
  15. passwd -l mailnull
  16. passwd -l pcap
  17. passwd -l mail
  18. passwd -l shutdown
  19. passwd -l halt
  20. passwd -l uucp
  21. passwd -l operator
  22. passwd -l sync
  23. passwd -l adm
  24. passwd -l lp
  25. # 用 chattr 给用户路径更改属性。
  26. # chattr 命令用法参考文末说明[1]
  27. chattr +i /etc/passwd
  28. chattr +i /etc/shadow
  29. chattr +i /etc/group
  30. chattr +i /etc/gshadow
  31. # 设置密码连续输错 3 次后锁定 5 分钟
  32. sed -i 's#auth required\
  33. pam_env.so#auth required\
  34. pam_env.so nauth required\
  35. pam_tally.so onerr=fail deny=3\
  36. unlock_time=300\
  37. nauth required /lib/security/ \
  38. $ISA/pam_tally.so onerr=fail \
  39. deny=3 unlock_time=300#'\
  40. /etc/pam.d/system-auth
  41. # 5 分钟后自动登出,原因参考文末说明[2]
  42. echo "TMOUT=300" >> /etc/profile
  43. # 历史命令记录数设定为 10 条
  44. sed -i
  45. "s/HISTSIZE=1000/HISTSIZE=10/"
  46. /etc/profile
  47. # 让以上针对 /etc/profile 的改动立即生效
  48. source /etc/profile
  49. # 在 /etc/sysctl.conf 中启用 syncookie
  50. echo "net.ipv4.tcp_syncookies=1" >>
  51. /etc/sysctl.conf
  52. # exec sysctl.conf enable
  53. sysctl -p
  54. # 优化 sshd_config
  55. sed -i "s/#MaxAuthTries 6/MaxAuthTries
  56. 6/" /etc/ssh/sshd_config
  57. sed -i "s/#UseDNS yes/UseDNS no/"
  58. /etc/ssh/sshd_config
  59. # 限制重要命令的权限
  60. chmod 700 /bin/ping
  61. chmod 700 /usr/bin/finger
  62. chmod 700 /usr/bin/who
  63. chmod 700 /usr/bin/w
  64. chmod 700 /usr/bin/locate
  65. chmod 700 /usr/bin/whereis
  66. chmod 700 /sbin/ifconfig
  67. chmod 700 /usr/bin/pico
  68. chmod 700 /bin/vi
  69. chmod 700 /usr/bin/which
  70. chmod 700 /usr/bin/gcc
  71. chmod 700 /usr/bin/make
  72. chmod 700 /bin/rpm
  73. # 历史安全
  74. chattr +a /root/.bash_history
  75. chattr +i /root/.bash_history
  76. # 给重要命令写 md5
  77. cat > list << "EOF" &&
  78. /bin/ping
  79. /usr/bin/finger
  80. /usr/bin/who
  81. /usr/bin/w
  82. /usr/bin/locate
  83. /usr/bin/whereis
  84. /sbin/ifconfig
  85. /bin/vi
  86. /usr/bin/vim
  87. /usr/bin/which
  88. /usr/bin/gcc
  89. /usr/bin/make
  90. /bin/rpm
  91. EOF
  92. for i in `cat list`
  93. do
  94. if [ ! -x $i ];then
  95. echo "$i not found,no md5sum!"
  96. else
  97. md5sum $i >>
  98. /var/log/`hostname`.log
  99. fi
  100. done
  101. rm -f list
  102. ###############################
  103. iptables缺省脚本
  104. /sbin/modprobe ip_tables
  105. /sbin/modprobe ip_nat_ftp
  106. iptables -F
  107. iptables -X
  108. iptables -Z
  109. # 默认规则
  110. iptables -P INPUT DROP
  111. iptables -P OUTPUT DROP
  112. iptables -P FORWARD DROP
  113. # 限制数据包数量
  114. /sbin/iptables -A INPUT -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
  115. /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec
  116. --limit-burst 200 -j ACCEPT
  117. /sbin/iptables -A INPUT -p icmp -m limit --limit 12/min --limit-burst 2 -j DROP
  118. #ssh 规则
  119. iptables -t filter -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
  120. iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT
  121. #www-ftp-mail-dns 规则
  122. iptables -t filter -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
  123. iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 80 -j ACCEPT
  124. #ICMP 规则
  125. iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  126. iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
  127. iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
  128. iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
  129. 基础知识
  130. iptables 以顺序方式执行,从上到下
  131. 常用 iptables 维护命令
  132. #iptables -L -n
  133. 显示当前 iptables 规则
  134. #iptables-save > /etc/iptables-script
  135. 保存规则
  136. #iptables-restore /etc/iptables-script
  137. 恢复保存的规则
  138. 设置 iptables 开机自动加载规则,添加以下内
  139. 容至 /etc/rc.local 文件中即可
  140. /sbin/iptables-restore /etc/iptablesscript
  141. 需要注意的是,必须写完全路径,要不然系统找
  142. 不到命令与规则及脚本
  143. ##用 iptables 把来自某个国家的 IP 重定向
  144. #!/bin/bash
  145. # Redirect traffic from a specific country to a specific page
  146. # written by vpsee.com
  147. COUNTRY="cn"
  148. YOURIP="1.2.3.4"
  149. if [ "$(id -u)" != "0" ]; then
  150. echo "you must be root" 1>&2
  151. exit 1
  152. fi
  153. iptables -F
  154. iptables -X
  155. iptables -A INPUT -i lo -j ACCEPT
  156. iptables -A OUTPUT -o lo -j ACCEPT
  157. iptables -A INPUT -i eth0 -j ACCEPT
  158. iptables -A OUTPUT -o eth0 -j ACCEPT
  159. # Redirect incoming http (80) from China to 81
  160. for c in $COUNTRY
  161. do
  162. country_file=$c.zone
  163. IPS=$(egrep -v "^#|^$" $country_file)
  164. for ip in $IPS
  165. do
  166. echo "redirecting $ip"
  167. iptables -t nat -I PREROUTING -p tcp --dport 80 -s $ip -j DNAT \
  168. --to-destination $YOURIP:81
  169. done
  170. done
  171. iptables-save > /etc/sysconfig/iptables
  172. chmod go-r /etc/sysconfig/iptables
  173. service iptables restart
  174. 密码随机生成
  175. #1
  176. date +%s | sha256sum | base64 | head -c 32; echo
  177. 使用 SHA 来哈希日期,输出头 32 个字节。
  178. #2
  179. < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
  180. 使用内嵌的 /dev/urandom,只输出字符,结果取
  181. 32 个。
  182. #3
  183. openssl rand -base64 32
  184. 使用系统自带的 openssl 的随机特点来产生随机
  185. 密码
  186. #4
  187. tr -cd ‘[:alnum:]‘ < /dev/urandom | fold -w30 | head -n1
  188. #5
  189. strings /dev/urandom | grep -o‘[[:alnum:]]’| head -n 30 | tr -d\n’; echo
  190. 通过过滤字符命令,输出随机密码
  191. #6
  192. < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6
  193. 这个命令比起来比较简单了
  194. #7
  195. dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
  196. #8
  197. </dev/urandom tr -dc 12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB’| head -c8; echo “”
  198. #9
  199. randpw(){ < /dev/urandom tr -dc _A-Za-z-0-9 | head -c${1:-16};echo;}
  200. 使用 randpw 随时产生随机密码,可以把它放到~/.bashrc 文件里面。
  201. #10
  202. date | md5sum
  203. bash 程序的排错
  204. 检查语法
  205. bash -v xxx.sh
  206. 不执行,仅查看
  207. bash -n xxx.sh
  208. 追踪
  209. bash -x
  210. 强制变量经过声明才能使用
  211. shopt -s -o nounset
  212. 一般执行bash xxx.sh 会在当前的父sell 下新开一个子shell(#!/bin/bash)
  213. 在当前shell 环境下执行,不重新开启子shell 会影响当前shell的环境
  214. . xxxx.sh
  215. source xxx.sh
  216. echo $SHLVL 查看处于的shell层次
  217. ps -axf 内存中进程的层级关系
  218. HIS="history"
  219. evel "$HIS > $USER.log" #读取参数结合形成一个新的命令并执行
  220. basename 路径的文件名
  221. dirname 目录名
  222. tee
  223. diff
  224. script 记录命令的执行过程
  225. here document
  226. 支持变量替换:转向前替换变量
  227. 命令 << EOF
  228. djkkd
  229. dkga
  230. EOF
  231. 关闭变量替换:按照原本样式输出
  232. cat << 'HERE'
  233. sd
  234. date
  235. HERE
  236. 多行批注
  237. : << DO-NOTTHING
  238. DKDSS
  239. jfdjga
  240. DO-NOTTHING

linux-shell脚本基础-2的更多相关文章

  1. 详细介绍Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  2. Linux shell脚本基础学习详细介绍(完整版)二

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  3. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  4. Linux shell脚本基础

    程序的组成: 程序:算法+数据结构 数据:程序处理的目标 数据结构:相互之间存在一种或多种特定关系的数据元素的集合 算法:处理数据的方式 编程风格: 面向对象:把所有的操作都转化为对象的方式. 面向过 ...

  5. Linux shell脚本 基础

    一.shell中三个引号的用法 1.单引号:所见即所得 例如:var=123 var2='${var}123' echo var2 var2结果为${var}123 2.双引号:输出引号中的内容,若存 ...

  6. 阿里Linux Shell脚本面试25个经典问答

    转载: 阿里Linux Shell脚本面试25个经典问答 Q:1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命 ...

  7. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  8. 老李分享:《Linux Shell脚本攻略》 要点(一)

    老李分享:<Linux Shell脚本攻略> 要点(一)   第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符 ...

  9. linux ——shell 脚本

                                                      linux—shell 脚本  精简基础                 2018/10/30 13 ...

  10. linux shell脚本相关知识

    最近的项目中,有一个编写linux shell脚本的任务.由于之前不是很熟悉,在这个过程中遇到了很多困难,查找了很多资料,也收获了很多.下面是linux shell脚本中常用的知识总结. 1基础语法 ...

随机推荐

  1. windows OS安全配置【持续更新20190618】

    https://www.52stu.org/?p=76 来源:5号暗区 5号黯区 五号黯区 5号暗区 windows系统的一些加固方法等 关闭445端口: REG ADD HKLM\SYSTEM\Cu ...

  2. Synchronized底层优化(轻量级锁、偏向锁)(二)

    一.重量级锁 上篇文章中向大家介绍了Synchronized的用法及其实现的原理.现在我们应该知道,Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的.但是监视器锁本质 ...

  3. bi的tableau

    参考: 官网: https://help.tableau.com/current/server-linux/zh-cn/get_started_server.htm 可视化分析最佳做法: 实用指南 h ...

  4. Object的create、assign、getPrototypeOf与拷贝

    Object的create.assign.getPrototypeOf与拷贝:https://www.cnblogs.com/ninalei/p/8655567.html

  5. ELK的搭建以及使用

    一.架构如图: 二.工作机制: 在需要收集日志的应用上安装filebeat(需要修改配置文件,配置文件稍后介绍),启动filebeat后,会收集该应用的日志推送给redis,然后logstash从re ...

  6. C#获取局域网主机

    C#获取局域网主机 最近在做一个使用MSRDPClient来实现远程桌面功能,需要先判断一下该局域网主机是否在线,所以就需要获取一遍局域网主机. 首先获取本地IP地址,这里需要注意的是,要排除掉虚拟机 ...

  7. 运维ipvsadm配置负载均衡2

    一.什么是lvs1.lvs的定义LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.是由章文嵩博士开发的一款开源软件,1998年5月发布,是中 ...

  8. css 超出部分显示省略号 汇总

    单行: 加宽度 overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 多行: display: -webkit-box; -we ...

  9. 什么是RESTful API、WSGI、pecan

    RESTful API REST的全称是Representational State Transfer(表征状态转移), 是Roy Fielding在他的博士论文Architectural Style ...

  10. JVM常用虚拟机命令汇总

    title: JVM常用虚拟机命令汇总 comments: false date: 2019-07-22 11:45:33 description: 总结一下常用的JVM虚拟机启动命令. catego ...