PHP真的有多进程,多线程吗?

回复

PHPzkbhj 回复了问题 • 1 人关注 • 1 个回复 • 3723 次浏览 • 2016-11-29 11:57 • 来自相关话题

PHP如何进行简单的文本操作?

回复

PHPzkbhj 回复了问题 • 1 人关注 • 1 个回复 • 4796 次浏览 • 2016-11-29 11:38 • 来自相关话题

mysql 中的varchar(255) 能放多少汉字?

回复

服务器zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 5800 次浏览 • 2016-11-29 10:37 • 来自相关话题

什么是Docker?

回复

专业名词zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 3657 次浏览 • 2016-11-23 11:14 • 来自相关话题

什么是服务降级

专业名词zkbhj 发表了文章 • 0 个评论 • 1350 次浏览 • 2016-11-23 11:11 • 来自相关话题

服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。
 
服务降级方式:
 
 服务接口拒绝服务:无用户特定信息,页面能访问,但是添加删除提示服务器繁忙。页面内容也可在Varnish或CDN内获取。 页面拒绝服务:页面提示由于服务繁忙此服务暂停。跳转到varnish或nginx的一个静态页面。 延迟持久化:页面访问照常,但是涉及记录变更,会提示稍晚能看到结果,将数据记录到异步队列或log,服务恢复后执行 随机拒绝服务:服务接口随机拒绝服务,让用户重试,目前较少有人采用。因为用户体验不佳。

持久层降级方式




 
降级方式

 直觉管理方式:运维人员可以指定哪些模块降级。

 当服务器检测到压力增大,服务器监测自动发送通知给运维人员

 运维人员根据自己或相关人员判断后通过配置平台设置当前运行等级来降级

 降级首先可以对非核心业务进行接口降级。

 如果效果不显著,开始对一些页面进行降级,以此保证核心功能的正常运行。


 分级管理方式:运维人员无需关心业务细节,直接按级别降低即可。

 当服务器检测到压力增大,服务检测自动发送通知给运维人员。

 运维人员根据情况选择运行等级1~10.

 各个应用根据自己的级别自动判断是否工作,如何拒绝。
 
服务降级埋点的地方:
消息中间件:所有API调用可以使用消息中间件进行控制前端页面:指定网址不可访问(NGINX+LUA)底层数据驱动:拒绝所有增删改动作,只允许查询
 
  查看全部
服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。
 
服务降级方式:
 
  •  服务接口拒绝服务:无用户特定信息,页面能访问,但是添加删除提示服务器繁忙。页面内容也可在Varnish或CDN内获取。
  •  页面拒绝服务:页面提示由于服务繁忙此服务暂停。跳转到varnish或nginx的一个静态页面。
  •  延迟持久化:页面访问照常,但是涉及记录变更,会提示稍晚能看到结果,将数据记录到异步队列或log,服务恢复后执行
  •  随机拒绝服务:服务接口随机拒绝服务,让用户重试,目前较少有人采用。因为用户体验不佳。


持久层降级方式
QQ截图20161123111101.png

 
降级方式

 直觉管理方式:运维人员可以指定哪些模块降级。

 当服务器检测到压力增大,服务器监测自动发送通知给运维人员

 运维人员根据自己或相关人员判断后通过配置平台设置当前运行等级来降级

 降级首先可以对非核心业务进行接口降级。

 如果效果不显著,开始对一些页面进行降级,以此保证核心功能的正常运行。


 分级管理方式:运维人员无需关心业务细节,直接按级别降低即可。

 当服务器检测到压力增大,服务检测自动发送通知给运维人员。

 运维人员根据情况选择运行等级1~10.

 各个应用根据自己的级别自动判断是否工作,如何拒绝。
 
服务降级埋点的地方:
  • 消息中间件:所有API调用可以使用消息中间件进行控制
  • 前端页面:指定网址不可访问(NGINX+LUA)
  • 底层数据驱动:拒绝所有增删改动作,只允许查询

 
 

chrome浏览器的地址栏变黑怎么解决?

回复

工具软件zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 4794 次浏览 • 2016-11-23 10:12 • 来自相关话题

Session 的存储方式

服务器zkbhj 发表了文章 • 0 个评论 • 1348 次浏览 • 2016-11-21 16:57 • 来自相关话题

Session 的存储方式

在 php.ini 文件中,进行配置。
 
涉及配置参数: - session.save_handler

- session.save_path注意:这两个参数可以在 PHP 中通过 ini_set 来设置,不用直接覆盖原 php.ini 中的值。
 
一、文件存储session.save_handler = files

session.save_path = "N;MODE;/path"注释:N 表示多级目录,值为数字。MODE 表示创建的 Session 文件权限。/path 表示 Session 存储路径。

这里我设置
session.save_path = "2;600;/tmp/"重启PHP-FPM,然后写个测试脚本 test.php,代码里运行 session_start();

结果报错
PHP Warning: session_start(): open(/tmp/h/p/sess_hpbfs95c9omtfn30h5lt43i597, O_RDWR) failed: No such file or directory
为什么呢?

我们来看下PHP官网怎么说的吧
 


此指令还有一个可选的 N 参数来决定会话文件分布的目录深度。例如,设定为 '5;/tmp' 将使创建的会话文件和路径类似于 /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If。 要使用 N 参数,必须在使用前先创建好这些目录。 在 ext/session 目录下有个小的 shell 脚本名叫 mod_files.sh,windows 版本是 mod_files.bat 可以用来做这件事。 此外注意如果使用了 N 参数并且大于 0,那么将不会执行自动垃圾回收,更多信息见 php.ini。 另外如果用了 N 参数,要确保将 session.save_path 的值用双引号 "quotes" 括起来,因为分隔符分号( ;)在 php.ini 中也是注释符号。 文件储存模块默认使用 mode 600 创建文件。通过 修改可选参数 MODE 来改变这种默认行为: N;MODE;/path ,其中 MODE 是 mode 的八进制表示。 MODE 设置不影响进程的掩码(umask)。 Caution:使用以上描述的可选目录层级参数 N 时请注意,对于绝大多数站点,大于1或者2的值会不太合适——因为这需要创建大量的目录:例如,值设置为 3 需要在文件系统上创建 64^3 个目录,将浪费很多空间和 inode。仅仅在绝对肯定站点足够大时,才可以设置 N 大于2。
 

了解这些,我们就开始处理 Session 存储目录的创建了,注意子目录的权限问题。
bash /path/to/mod_files.sh
使用多级目录的后果就是,你必须手动清理这些 Session。
 
二、Redis

首先你得安装了 Redis 扩展
session.save_handler = redis

//多节点
session.save_path = "tcp://ip:port?auth=secret?weight=1&timeout=2.5,tcp://ip2:port2?weight=2"

//单个节点
session.save_path = "tcp://ip:port?auth=secret?weight=1&timeout=2.5"

//socket 方式

session.save_path = "unix:///var/run/redis/redis.sock?persistent=1&weight=1&database=0

解释一下,涉及参数的含义:
ip: Redis 节点的 IP。

port: Redis 节点的端口。

auth: 与 Redis 节点进行权限验证。

weight: 权重,上面的例子表示session数量,ip2节点 是 ip1节点的两倍。

timeout: Redis 连接超时时间。单位:秒。连接失败时,Session不可用(风险!)

persistent: 持久连接。

prefix: 前缀,默认是 "PHPREDIS_SESSION:"。

database: 选择哪个 Redis 数据库。取值:int。参见 Redis 配置 databases 16。
重启PHP-FPM,然后写个测试脚本 test.php,代码里运行 session_start();

我们看看效果
 
redis-cli

127.0.0.1:6379> KEYS *
1) "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"

127.0.0.1:6379> TYPE "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"
string

127.0.0.1:6379> get "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"
"admin_user|a:3:{s:8:\"username\";s:4:\"test\";s:4:\"name\";s:4:\"test";s:5:\"email\";s:12:\"test@test.cn\";}"

127.0.0.1:6379> ttl "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"
(integer) 292
可以看到 Session 存入了 Redis 中,数据结构用的是 String。

Session 的过期时间
 
使用 php.ini 中的 session.gc_maxlifetime

可以通过 ini_set 在 php 中自定义。
多机房的 Redis 存储怎么弄?

同步呗! 查看全部
Session 的存储方式

在 php.ini 文件中,进行配置。
 
涉及配置参数:
 - session.save_handler

- session.save_path
注意:这两个参数可以在 PHP 中通过 ini_set 来设置,不用直接覆盖原 php.ini 中的值。
 
一、文件存储
session.save_handler = files

session.save_path = "N;MODE;/path"
注释:N 表示多级目录,值为数字。MODE 表示创建的 Session 文件权限。/path 表示 Session 存储路径。

这里我设置
session.save_path = "2;600;/tmp/"
重启PHP-FPM,然后写个测试脚本 test.php,代码里运行 session_start();

结果报错
PHP Warning:  session_start(): open(/tmp/h/p/sess_hpbfs95c9omtfn30h5lt43i597, O_RDWR) failed: No such file or directory

为什么呢?

我们来看下PHP官网怎么说的吧
 



此指令还有一个可选的 N 参数来决定会话文件分布的目录深度。例如,设定为 '5;/tmp' 将使创建的会话文件和路径类似于 /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If。 要使用 N 参数,必须在使用前先创建好这些目录。 在 ext/session 目录下有个小的 shell 脚本名叫 mod_files.sh,windows 版本是 mod_files.bat 可以用来做这件事。 此外注意如果使用了 N 参数并且大于 0,那么将不会执行自动垃圾回收,更多信息见 php.ini。 另外如果用了 N 参数,要确保将 session.save_path 的值用双引号 "quotes" 括起来,因为分隔符分号( ;)在 php.ini 中也是注释符号。 文件储存模块默认使用 mode 600 创建文件。通过 修改可选参数 MODE 来改变这种默认行为: N;MODE;/path ,其中 MODE 是 mode 的八进制表示。 MODE 设置不影响进程的掩码(umask)。 Caution:使用以上描述的可选目录层级参数 N 时请注意,对于绝大多数站点,大于1或者2的值会不太合适——因为这需要创建大量的目录:例如,值设置为 3 需要在文件系统上创建 64^3 个目录,将浪费很多空间和 inode。仅仅在绝对肯定站点足够大时,才可以设置 N 大于2。
 


了解这些,我们就开始处理 Session 存储目录的创建了,注意子目录的权限问题。
bash /path/to/mod_files.sh

使用多级目录的后果就是,你必须手动清理这些 Session。
 
二、Redis

首先你得安装了 Redis 扩展
session.save_handler = redis

//多节点
session.save_path = "tcp://ip:port?auth=secret?weight=1&timeout=2.5,tcp://ip2:port2?weight=2"

//单个节点
session.save_path = "tcp://ip:port?auth=secret?weight=1&timeout=2.5"

//socket 方式

session.save_path = "unix:///var/run/redis/redis.sock?persistent=1&weight=1&database=0

解释一下,涉及参数的含义:
ip: Redis 节点的 IP。

port: Redis 节点的端口。

auth: 与 Redis 节点进行权限验证。

weight: 权重,上面的例子表示session数量,ip2节点 是 ip1节点的两倍。

timeout: Redis 连接超时时间。单位:秒。连接失败时,Session不可用(风险!)

persistent: 持久连接。

prefix: 前缀,默认是 "PHPREDIS_SESSION:"。

database: 选择哪个 Redis 数据库。取值:int。参见 Redis 配置 databases 16。

重启PHP-FPM,然后写个测试脚本 test.php,代码里运行 session_start();

我们看看效果
 
redis-cli

127.0.0.1:6379> KEYS *
1) "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"

127.0.0.1:6379> TYPE "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"
string

127.0.0.1:6379> get "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"
"admin_user|a:3:{s:8:\"username\";s:4:\"test\";s:4:\"name\";s:4:\"test";s:5:\"email\";s:12:\"test@test.cn\";}"

127.0.0.1:6379> ttl "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"
(integer) 292

可以看到 Session 存入了 Redis 中,数据结构用的是 String。

Session 的过期时间
 
使用 php.ini 中的 session.gc_maxlifetime

可以通过 ini_set 在 php 中自定义。

多机房的 Redis 存储怎么弄?

同步呗!

Yii2中如何开发自己的或者是封装别人的组件给系统使用?

回复

Yii框架zkbhj 发起了问题 • 1 人关注 • 0 个回复 • 4940 次浏览 • 2016-11-18 16:15 • 来自相关话题

算法复杂度速查表

常识zkbhj 发表了文章 • 0 个评论 • 2301 次浏览 • 2016-11-18 09:54 • 来自相关话题

这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度。
 数据结构操作





 
数组排序算法





 
图操作





 
堆操作





 
大 O 复杂度图表
 





 
  查看全部
这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度。
 数据结构操作

1.png

 
数组排序算法

2.jpeg

 
图操作

3.png

 
堆操作

4.png

 
大 O 复杂度图表
 

5.png

 
 

Linux中常用操作命令合集

服务器zkbhj 发表了文章 • 0 个评论 • 1478 次浏览 • 2016-11-16 14:02 • 来自相关话题

常用指令


ls        显示文件或目录

     -l           列出文件详细信息l(list)

     -a          列出当前目录下所有文件及目录,包括隐藏的a(all)

mkdir         创建目录

     -p           创建目录,若无父目录,则创建p(parent)

cd               切换目录

touch          创建空文件

echo            创建带有内容的文件。

cat              查看文件内容

cp                拷贝

mv               移动或重命名

rm               删除文件

     -r            递归删除,可删除子目录及文件

     -f            强制删除

find              在文件系统中搜索某文件

wc                统计文本中行数、字数、字符数

grep             在文本文件中查找某个字符串

rmdir           删除空目录

tree             树形结构显示目录,需要安装tree包

pwd              显示当前目录

ln                  创建链接文件

more、less  分页显示文本文件内容

head、tail    显示文件头、尾内容

ctrl+alt+F1  命令行全屏模式
 

系统管理命令


stat              显示指定文件的详细信息,比ls更详细

who               显示在线登陆用户

whoami          显示当前操作用户

hostname      显示主机名

uname           显示系统信息

top                动态显示当前耗费资源最多进程信息

ps                  显示瞬间进程状态 ps -aux

du                  查看目录大小 du -h /home带有单位显示目录信息

df                  查看磁盘大小 df -h 带有单位显示磁盘信息

ifconfig          查看网络情况

ping                测试网络连通

netstat          显示网络状态信息

man                命令不会用了,找男人  如:man ls

clear              清屏

alias               对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit

kill                 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。 

打包压缩相关命令


gzip:

bzip2:

tar:                打包压缩

     -c              归档文件

     -x              压缩文件

     -z              gzip压缩文件

     -j              bzip2压缩文件

     -v              显示压缩或解压缩过程 v(view)

     -f              使用档名

例:

tar -cvf /home/abc.tar /home/abc              只打包,不压缩

tar -zcvf /home/abc.tar.gz /home/abc        打包,并用gzip压缩

tar -jcvf /home/abc.tar.bz2 /home/abc      打包,并用bzip2压缩

当然,如果想解压缩,就直接替换上面的命令  tar -cvf  / tar -zcvf  / tar -jcvf 中的“c” 换成“x” 就可以了。 

关机/重启机器


shutdown

     -r             关机重启

     -h             关机不重启

     now          立刻关机

halt               关机

reboot          重启
 

Linux管道


将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。

例:grep -r "close" /home/* | more       在home目录下所有文件中查找,包括close的文件,并分页输出。
 
 

Linux软件包管理


dpkg (Debian Package)管理工具,软件包名以.deb后缀。这种方法适合系统不能联网的情况下。

比如安装tree命令的安装包,先将tree.deb传到Linux系统中。再使用如下命令安装。

sudo dpkg -i tree_1.5.3-1_i386.deb         安装软件

sudo dpkg -r tree                                     卸载软件

 

注:将tree.deb传到Linux系统中,有多种方式。VMwareTool,使用挂载方式;使用winSCP工具等;

APT(Advanced Packaging Tool)高级软件工具。这种方法适合系统能够连接互联网的情况。

依然以tree为例

sudo apt-get install tree                         安装tree

sudo apt-get remove tree                       卸载tree

sudo apt-get update                                 更新软件

sudo apt-get upgrade        

 

将.rpm文件转为.deb文件

.rpm为RedHat使用的软件格式。在Ubuntu下不能直接使用,所以需要转换一下。

sudo alien abc.rpm

 

vim使用


vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。

命令模式下:

:q                      退出

:q!                     强制退出

:wq                   保存并退出

:set number     显示行号

:set nonumber  隐藏行号

/apache            在文档中查找apache 按n跳到下一个,shift+n上一个

yyp                   复制光标所在行,并粘贴

h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)

 

用户及用户组管理


/etc/passwd    存储用户账号

/etc/group       存储组账号

/etc/shadow    存储用户账号的密码

/etc/gshadow  存储用户组账号的密码

useradd 用户名

userdel 用户名

adduser 用户名

groupadd 组名

groupdel 组名

passwd root     给root设置密码

su root

su - root 

/etc/profile     系统环境变量

bash_profile     用户环境变量

.bashrc              用户环境变量

su user              切换用户,加载配置文件.bashrc

su - user            切换用户,加载配置文件/etc/profile ,加载bash_profile 

更改文件的用户及用户组


sudo chown [-R] owner[:group] {File|Directory}

例如:还以jdk-7u21-linux-i586.tar.gz为例。属于用户hadoop,组hadoop

要想切换此文件所属的用户及组。可以使用命令。

sudo chown root:root jdk-7u21-linux-i586.tar.gz

 

文件权限管理


三种基本权限

R           读         数值表示为4

W          写         数值表示为2

X           可执行  数值表示为1




如图所示,jdk-7u21-linux-i586.tar.gz文件的权限为-rw-rw-r--

-rw-rw-r--一共十个字符,分成四段。

第一个字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录

第二三四个字符“rw-”表示当前所属用户的权限。   所以用数值表示为4+2=6

第五六七个字符“rw-”表示当前所属组的权限。      所以用数值表示为4+2=6

第八九十个字符“r--”表示其他用户权限。              所以用数值表示为2

所以操作此文件的权限用数值表示为662 

更改权限


sudo chmod [u所属用户  g所属组  o其他用户  a所有用户]  [+增加权限  -减少权限]  [r  w  x]   目录名 

例如:有一个文件filename,权限为“-rw-r----x” ,将权限值改为"-rwxrw-r-x",用数值表示为765

sudo chmod u+x g+w o+r  filename

上面的例子可以用数值表示

sudo chmod 765 filename 查看全部


常用指令



ls        显示文件或目录

     -l           列出文件详细信息l(list)

     -a          列出当前目录下所有文件及目录,包括隐藏的a(all)

mkdir         创建目录

     -p           创建目录,若无父目录,则创建p(parent)

cd               切换目录

touch          创建空文件

echo            创建带有内容的文件。

cat              查看文件内容

cp                拷贝

mv               移动或重命名

rm               删除文件

     -r            递归删除,可删除子目录及文件

     -f            强制删除

find              在文件系统中搜索某文件

wc                统计文本中行数、字数、字符数

grep             在文本文件中查找某个字符串

rmdir           删除空目录

tree             树形结构显示目录,需要安装tree包

pwd              显示当前目录

ln                  创建链接文件

more、less  分页显示文本文件内容

head、tail    显示文件头、尾内容

ctrl+alt+F1  命令行全屏模式
 


系统管理命令



stat              显示指定文件的详细信息,比ls更详细

who               显示在线登陆用户

whoami          显示当前操作用户

hostname      显示主机名

uname           显示系统信息

top                动态显示当前耗费资源最多进程信息

ps                  显示瞬间进程状态 ps -aux

du                  查看目录大小 du -h /home带有单位显示目录信息

df                  查看磁盘大小 df -h 带有单位显示磁盘信息

ifconfig          查看网络情况

ping                测试网络连通

netstat          显示网络状态信息

man                命令不会用了,找男人  如:man ls

clear              清屏

alias               对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit

kill                 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。 


打包压缩相关命令



gzip:

bzip2:

tar:                打包压缩

     -c              归档文件

     -x              压缩文件

     -z              gzip压缩文件

     -j              bzip2压缩文件

     -v              显示压缩或解压缩过程 v(view)

     -f              使用档名

例:

tar -cvf /home/abc.tar /home/abc              只打包,不压缩

tar -zcvf /home/abc.tar.gz /home/abc        打包,并用gzip压缩

tar -jcvf /home/abc.tar.bz2 /home/abc      打包,并用bzip2压缩

当然,如果想解压缩,就直接替换上面的命令  tar -cvf  / tar -zcvf  / tar -jcvf 中的“c” 换成“x” 就可以了。 


关机/重启机器



shutdown

     -r             关机重启

     -h             关机不重启

     now          立刻关机

halt               关机

reboot          重启
 


Linux管道



将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。

例:grep -r "close" /home/* | more       在home目录下所有文件中查找,包括close的文件,并分页输出。
 
 


Linux软件包管理



dpkg (Debian Package)管理工具,软件包名以.deb后缀。这种方法适合系统不能联网的情况下。

比如安装tree命令的安装包,先将tree.deb传到Linux系统中。再使用如下命令安装。

sudo dpkg -i tree_1.5.3-1_i386.deb         安装软件

sudo dpkg -r tree                                     卸载软件

 

注:将tree.deb传到Linux系统中,有多种方式。VMwareTool,使用挂载方式;使用winSCP工具等;

APT(Advanced Packaging Tool)高级软件工具。这种方法适合系统能够连接互联网的情况。

依然以tree为例

sudo apt-get install tree                         安装tree

sudo apt-get remove tree                       卸载tree

sudo apt-get update                                 更新软件

sudo apt-get upgrade        

 

将.rpm文件转为.deb文件

.rpm为RedHat使用的软件格式。在Ubuntu下不能直接使用,所以需要转换一下。

sudo alien abc.rpm

 


vim使用



vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。

命令模式下:

:q                      退出

:q!                     强制退出

:wq                   保存并退出

:set number     显示行号

:set nonumber  隐藏行号

/apache            在文档中查找apache 按n跳到下一个,shift+n上一个

yyp                   复制光标所在行,并粘贴

h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)

 


用户及用户组管理



/etc/passwd    存储用户账号

/etc/group       存储组账号

/etc/shadow    存储用户账号的密码

/etc/gshadow  存储用户组账号的密码

useradd 用户名

userdel 用户名

adduser 用户名

groupadd 组名

groupdel 组名

passwd root     给root设置密码

su root

su - root 

/etc/profile     系统环境变量

bash_profile     用户环境变量

.bashrc              用户环境变量

su user              切换用户,加载配置文件.bashrc

su - user            切换用户,加载配置文件/etc/profile ,加载bash_profile 


更改文件的用户及用户组



sudo chown [-R] owner[:group] {File|Directory}

例如:还以jdk-7u21-linux-i586.tar.gz为例。属于用户hadoop,组hadoop

要想切换此文件所属的用户及组。可以使用命令。

sudo chown root:root jdk-7u21-linux-i586.tar.gz

 


文件权限管理



三种基本权限

R           读         数值表示为4

W          写         数值表示为2

X           可执行  数值表示为1
091549405142313.png

如图所示,jdk-7u21-linux-i586.tar.gz文件的权限为-rw-rw-r--

-rw-rw-r--一共十个字符,分成四段。

第一个字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录

第二三四个字符“rw-”表示当前所属用户的权限。   所以用数值表示为4+2=6

第五六七个字符“rw-”表示当前所属组的权限。      所以用数值表示为4+2=6

第八九十个字符“r--”表示其他用户权限。              所以用数值表示为2

所以操作此文件的权限用数值表示为662 


更改权限



sudo chmod [u所属用户  g所属组  o其他用户  a所有用户]  [+增加权限  -减少权限]  [r  w  x]   目录名 

例如:有一个文件filename,权限为“-rw-r----x” ,将权限值改为"-rwxrw-r-x",用数值表示为765

sudo chmod u+x g+w o+r  filename

上面的例子可以用数值表示

sudo chmod 765 filename