shell总结:进程、环境变量、文件权限
2017-09-30 18:42
232 查看
进程列表:
进程列表是一种命令分组(command grouping)。另一种命令分组是将命令放入花括号中,并在命令列表尾部加上分号(;)。语法为 { command; } 。使用花括号进行命令分组并不会像进程列表那样创建出子shell。
后台模式:
协程:
内建命令:
1.外部命令:
文件系统命令,存在shell命令之外的程序。
一般在/bin /usr/bin /sbin /usr/sbin。可以使用which和type命令查找到它。
外部命令会forking(衍生)出一个子进程。
2.内建命令:
内建命令不会forking子进程。
但有可能同个命令既包含外部命令又包含内建命令,可通过type -a查询。
3.history
4.命令别名
环境变量:
1.全局环境变量
对shell和所有生成的子shell都是可见的。系统环境变量一般用全大写表示。
2.局部变量
变量是局部的,只有在定义它们的进程中可见。linux没有直接查看局部变量的命令。
3.设置用户自定义变量
用户自定义变量一般使用小写字符串定义,区别全局变量,且使用=号赋值,如果中间有空格要加引号。
手动设置全局环境变量,先设置局部环境变量,然后用export导出局部环境变量即可。
4.删除环境变量
使用unset命令删除环境变量
5.设置PATH环境变量
手动添加执行程序PATH变量。可以把新的搜索目录添加到现有的 PATH 环境变量中,无需从头定义。 PATH 中各个目录之间是用冒号分隔的。只需引用原来的 PATH 值,然后再给这个字符串添加新目录就行了。
如果希望子shell也能找到你的程序的位置,一定要记得把修改后的 PATH 环境变量导出。
登录shell:
1./etc/profile文件是系统上默认的bash shell的主启动文件。系统上的每个用户登录时都会执行这个启动文件。
数组变量:
环境变量可以作为数组使用。但要配合数组索引值。使用通配符可显示全部变量。也可以使用unset删除某个环境变量。
文件权限:
系统用专门的一个文件匹配用户UID,root用户UID固定分配为0.
用户名和密码被保存在/etc/shadow文件,只有特定用户可以访问。
修改用户:
usermod
添加新用户:
使用useradd命令添加新用户,useradd使用系统默认值以及命令参数创建新用户,并把系统默认值保存在/etc/default/useradd目录下,
删除用户:
删除用户只是删除在/etc/passwd中的相关信息,不会把所有用户程序资料都删除。
修改密码:
修改用户信息:
可以用finger查看用户信息,但很多linux默认没有安装finger
组group管理:
系统组信息都保存在/etc/group
格式为:组名:组密码:GID:属于改组的用户列表
注:在列表中,有些组并没有列出用户。这并不是说这些组没有成员。当一个用户在/etc/passwd文件中指定某个组作为默认组时,用户账户不会作为该组成员再出现在/etc/group文件中。
创建新组:
添加用户到新组:
修改组:
默认文件权限:
文件权限通过umask设置
文件全权限为666,目录全权限为777.
新建文件权限=全权限-umask
在Ubuntu系统,umask默认值设置在cat /etc/login.defs文件,UMASK 022
改变安全性设置:
改变权限
改变所属关系
进程列表是一种命令分组(command grouping)。另一种命令分组是将命令放入花括号中,并在命令列表尾部加上分号(;)。语法为 { command; } 。使用花括号进行命令分组并不会像进程列表那样创建出子shell。
(pwd;.....;echo $BASH_SUBSHELL) 使用进程列表创建子shell执行相应命令,支持嵌套,创建多个子shell。
后台模式:
sleep num & &将命令置入后台,暂停num秒钟。[1]表示后台job号,后接后台PID。 jobs -l -l详细列出后台作业信息。 xxx@ubuntu:~/test$ sleep 60 & [1] 118766 xxx@ubuntu:~/test$ ps -f UID PID PPID C STIME TTY TIME CMD 1009 73059 73058 0 Sep28 pts/0 00:00:01 -bash 1009 118766 73059 0 10:38 pts/0 00:00:00 sleep 60 1009 118931 73059 0 10:38 pts/0 00:00:00 ps -f
协程:
协程coproc直接创建子shell进入后台模式,等于进程列表+& @ubuntu:~/test$ coproc sleep 15 [1] 12250 @ubuntu:~/test$ ps -f UID PID PPID C STIME TTY TIME CMD 1009 12250 73059 0 11:10 pts/0 00:00:00 sleep 15 1009 12251 73059 0 11:10 pts/0 00:00:00 ps -f 1009 73059 73058 0 Sep28 pts/0 00:00:01 -bash
内建命令:
1.外部命令:
文件系统命令,存在shell命令之外的程序。
一般在/bin /usr/bin /sbin /usr/sbin。可以使用which和type命令查找到它。
@ubuntu:~/test$ which ps /bin/ps @ubuntu:~/test$ type ps ps is hashed (/bin/ps)
外部命令会forking(衍生)出一个子进程。
2.内建命令:
内建命令不会forking子进程。
但有可能同个命令既包含外部命令又包含内建命令,可通过type -a查询。
@ubuntu:~/test$ type -a echo echo is a shell builtin echo is /bin/echo
3.history
history 查询输入过的命令。 !! 执行上一条命令。 !num 执行第num条命令。
4.命令别名
alias -p 查看支持的别名 alias li='ls -li' 创建命令别名
环境变量:
1.全局环境变量
对shell和所有生成的子shell都是可见的。系统环境变量一般用全大写表示。
查看环境变量方法: env或者printenv printenv 变量名
2.局部变量
变量是局部的,只有在定义它们的进程中可见。linux没有直接查看局部变量的命令。
set 排序并打印进程的所有环境变量,包含全局变量、局部变量以及用户自定义变量。
3.设置用户自定义变量
用户自定义变量一般使用小写字符串定义,区别全局变量,且使用=号赋值,如果中间有空格要加引号。
my_variable=Hello my_variable="Hello World"
手动设置全局环境变量,先设置局部环境变量,然后用export导出局部环境变量即可。
my_variable=Hello export my_variable
4.删除环境变量
使用unset命令删除环境变量
unset my_variable 注意: 如果要用到变量,使用$;如果要操作变量,不使用$。这条规则的一个例外就是使用printenv 显示某个变量的值。 如果你是在子进程中删除了一个全局环境变量,这只对子进程有效。该全局环境变量在父进程中依然可用。
5.设置PATH环境变量
手动添加执行程序PATH变量。可以把新的搜索目录添加到现有的 PATH 环境变量中,无需从头定义。 PATH 中各个目录之间是用冒号分隔的。只需引用原来的 PATH 值,然后再给这个字符串添加新目录就行了。
PATH=$PATH:/home/christine/Scripts
如果希望子shell也能找到你的程序的位置,一定要记得把修改后的 PATH 环境变量导出。
登录shell:
1./etc/profile文件是系统上默认的bash shell的主启动文件。系统上的每个用户登录时都会执行这个启动文件。
数组变量:
环境变量可以作为数组使用。但要配合数组索引值。使用通配符可显示全部变量。也可以使用unset删除某个环境变量。
mytest=(one two three four five) echo $mytest one echo ${mytest[2]} three echo ${mytest[*]} one two three four five unset mytest[2]
文件权限:
系统用专门的一个文件匹配用户UID,root用户UID固定分配为0.
@ubuntu:/etc/profile.d$ cat /etc/passwd | egrep xxx xxx:x:1009:1009:,,,:/home/xxx:/bin/bash root:x:0:0:root:/r 4000 oot:/bin/bash
用户名和密码被保存在/etc/shadow文件,只有特定用户可以访问。
xxx@ubuntu:/$ cat /etc/shadow cat: /etc/shadow: Permission denied 可以访问的如: rich:$1$.FfcK0ns$f1UgiyHQ25wrB/hykCn020:11627:0:99999:7:::
修改用户:
usermod
添加新用户:
使用useradd命令添加新用户,useradd使用系统默认值以及命令参数创建新用户,并把系统默认值保存在/etc/default/useradd目录下,
/usr/sbin/useradd -D 查看系统默认值 useradd -D -s /bin/tesch 可更改系统默认shell -b default_home 更改默认HOME路径 -g group 更改默认用户组 。。。。。
删除用户:
删除用户只是删除在/etc/passwd中的相关信息,不会把所有用户程序资料都删除。
/usr/sbin/userdel -r username ls -l /home/username ls: cannot access /home/username: No such file or directory
修改密码:
passwd username 修改用户自己密码 passwd -e username 强制用户下次登录修改密码 chpasswd < users.text 批量修改用户密码
修改用户信息:
可以用finger查看用户信息,但很多linux默认没有安装finger
finger username chsh -s /bin/csh username 修改用户默认shell chfn username 询问哪些内容适合加入备注字段,可以从/etc/passwd查看。 chage 管理账户的有效期
组group管理:
系统组信息都保存在/etc/group
格式为:组名:组密码:GID:属于改组的用户列表
root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:android ------------------ username1:x:1001: username2:x:1002:
注:在列表中,有些组并没有列出用户。这并不是说这些组没有成员。当一个用户在/etc/passwd文件中指定某个组作为默认组时,用户账户不会作为该组成员再出现在/etc/group文件中。
创建新组:
/usr/sbin/groupadd newgroup tail /etc/group
添加用户到新组:
/usr/sbin/usermod -G newgroup username tail /etc/group
修改组:
/usr/sbin/groupmod -g newgid -n newgroup oldgroup 修改oldgroup组名为newgroup,gid为newgid。 所有安全权限是基于GID,组名可以随意修改,不影响安全性。
默认文件权限:
文件权限通过umask设置
umask 查看用户默认umask值 0022 第一个0表示粘着位,后三位表示权限,但它是八进制的掩码值。
文件全权限为666,目录全权限为777.
新建文件权限=全权限-umask
在Ubuntu系统,umask默认值设置在cat /etc/login.defs文件,UMASK 022
改变安全性设置:
改变权限
chmod a 全部 u 所有者 g 所属组 o 其它人 r 读 w 写 x 执行 chmod 777 等价于 chmod a=rwx chmod 771 等价于 chmod ug=rwx o=x
改变所属关系
chown owner file 改变文件的所有者 chgrp group file 改变文件的所属组
相关文章推荐
- 管道符、shell变量、环境变量配置文件
- 管道符和作业控制、shell变量、环境变量配置文件、添加操作记录审计
- Shell基础-环境变量配置文件-其他配置文件和登录信息
- 管道符,作业控制,shell变量,全局变量,环境变量的配置文件
- 管道符和作业控制、 shell变量 、环境变量配置文件
- Linux笔记(管道符/作业控制,shell变量,环境变量配置文件,常见问题)
- UNIX环境编程学习笔记(7)——文件I/O之文件访问权限与进程访问控制
- 如何查看特定进程(特定shell环境)配置的环境变量
- 8.6 管道符和作业控制;8.7—8.8 shell变量(上下);8.9 环境变量配置文件
- Shell基础(三):环境变量配置文件
- 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
- shell中的fork、source和exec总结(包括环境变量)
- LINUX系统学习笔记管道符和作业控制 ,shell变量 , 环境变量配置文件
- 管道符和作业控制、shell变量、环境变量配置文件
- shell中的fork、source和exec总结(包括环境变量)
- 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
- Linux中环境变量到底写在哪个文件中?解析login shell 和 no-login shell
- linux总结(2)——环境变量与shell
- Shell基础-环境变量配置文件-简介