文件权限与目录配置
各个权限的分数如下:
- r:4
- w:2
- x:1
所以修改权限就有两种方法:
- 第一种就是利用
chmod
命令
例如chmod -r 740 test.txt
就是让拥有者有rwx
权限,组有r
权限,other没有权限。 - 或者用直接赋予权限命令,
chmod u=rwx,go=rx .bashrc
。
但是如果有w权限,并不意味着可以删除此文件,删除的权限是赋予在目录上的。
目录权限
-
drwxr-xr-x解释:
-
d :第一位表示文件类型,d是目录文件、l是链接文件、-是普通文件、p是管道
-
rwx :第2-4位表示这个文件的属主拥有的权限。r是读、w是写、x是执行
-
r-x :第5-7位表示和这个文件属主所在同一个组的用户所具有的权限
-
r-x :第8-10位表示其他用户所具有的权限
比如:
drwxr-xr-x 4 oracle dba 4096 May 20 11:47 oralog1
表示oralog1是个目录,oracle拥有读写执行的权限,和oracle所在同一个dba组里的用户拥有只读和执行权限,剩下其他用户拥有只读和执行权限! -
如果有个目录的权限为:drwxr--r-- 3 root root 4096 jun 23 09:23 .ssh
系统有个账号vbird,这个账号对目录仅有r的权限但是只能查看文件列表,不能切换到这个目录下。所以在建设网站的时候,至少要给rx权限。
文件默认权限 umask
-
作用
umask命令指定在建立文件时预设的权限掩码。
umask可用来设定[权限掩码]。
[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。 -
语法
umask [-S][权限掩码]
-
参数说明:
-S 以文字的方式来表示权限掩码。
0022 第一个数是特殊权限,后面三个数代表去掉的权限,2说明去掉了w权限。
数据流重定向
- 标准输入(stdin):代码为0,使用<或<<
- 标准输出(stdout):代码为1,使用>或>>
- 标准错误输出(stderr):代码位2,使用2>或 2>>
stdout和stderr
find /home -name .bashrc > list_righ 2> list_error
但是如果想让正确和错误输入到同一个文件中
find /home -name .bashrc > list 2> list
错误find /home -name .bashrc >list 2>&1
正确find /home -name .bashrc &> list
正确
/dev/null 是类Unix系统中的一个特殊文件设备,他的作用是接受一切输入它的数据并丢弃这些数据。通常被当做垃圾桶来用。将输出流重定向到它上面,就是丢弃这个输出流上的所有输出。尝试从/dev/null读取数据,会立刻得到一个EOF。
cat命令
-
作用
cat 命令用于连接文件并打印到标准输出设备上。
-
语法格式
cat [-AbeEnstTuv] [–help] [–version] fileName
-
参数说明:
-
-n 或 --number:由 1 开始对所有输出的行数编号。
-
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
-
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-
-E 或 --show-ends : 在每行结束处显示 $。
-
-T 或 --show-tabs: 将 TAB 字符显示为 ^I。
-
-A, --show-all:等价于 -vET。
-
-e:等价于"-vE"选项;
-
-t:等价于"-vT"选项;
-
stdin
-
<
将需要键盘输入的数据改由文件替代cat > catfile < ./bashrc
: 意思是./bashrc
里面的内容当做输入传入catfile -
<<
代表输入结束的意思cat > catfile << “eof”
:意思是当输入eof的时候,则会结束输入
命令的执行
没有相关性的连续执行:用分号进行分割
sync; sync; shutdown
;如果有相关性的 则用 && 或 ||
-
command1 && command2
如果命令1执行错误,则不会执行2,如果命令1执行正确,则开始执行命令2. -
command1 || command2
如果命令1执行错误,则开始执行2,如果命令1执行正确,则不会执行命令2.
选取命令cut、grep
cut
是将一段信息的某一段切出来,处理信息的单位是“行”为单位。cut -d '分割字符' -f fields cut -c 字符范围 ubuntu@VM-13-35-ubuntu:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr:local/games ubuntu@VM-13-35-ubuntu:~$ echo $PATH | cut -d ':' -f 4 /usr/bin
grep
是分析一行的信息,如果有目标信息,就拿出来。last | grep 'root' #将出现root的行打印出来 last | grep -v 'root' #没有出现root的行打印出来
wc
用来统计输出信息的整体信息。wc -lwm -l: 仅列出行 -w: 仅列出多少字 -m:多少字符
循环执行命令
-
crontab
crontab是linux系统或unix系统中常用的定时命令,使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux/unix命令
-
crontab 文件的格式:
{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
- minute: 区间为 0 – 59
- hour: 区间为0 – 23
- day-of-month: 区间为0 – 31
- month: 区间为1 – 12. 1 是1月. 12是12月.
- Day-of-week: 区间为0 – 7. 周日可以是0或7.
-
Crontab 选项
- crontab –e : 修改 crontab 文件. 如果文件不存在会自动创建。
- crontab –l : 显示 crontab 文件。
- crontab -r : 删除 crontab 文件。
- crontab -ir : 删除 crontab 文件前提醒用户。
-
Crontab 示例
-
在 12:01 a.m 运行,即每天凌晨过一分钟。这是一个恰当的进行备份的时间,因为此时系统负载不大。
1 0 * * * /root/bin/backup.sh
-
每个工作日(Mon – Fri) 11:59 p.m 都进行备份作业。
59 11 * * 1,2,3,4,5 /root/bin/backup.sh
下面例子与上面的例子效果一样:
59 11 * * 1-5 /root/bin/backup.sh
-
每5分钟运行一次命令
*/5 * * * * /root/bin/check-status.sh
-
每个月的第一天 1:10 p.m 运行
10 13 1 * * /root/bin/full-backup.sh
-
每个工作日 11 p.m 运行。
0 23 * * 1-5 /root/bin/incremental-backup.sh
-
特殊符号
-
*
星号 代表任何时刻 -
,
逗号 代表分割时间 0 3,6 * * * command 代表 每天的3点和6点 -
-
减号 代表时间范围 -
/n
斜线 代表间隔,每隔n单位时间的意思
-
-
工作管理
-
直接将命令丢到后台中“执行”的
\&
tar -zpcf /tmp/tec.tar.gz /etc &
但是当出错或者输出时,将会扰乱当前界面,最好像输出重定向到某个文件。
tar -zvcf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
这样就不会有多余信息输出到当前界面了。 -
将目前的工作丢到后台“暂停”:
[ctrl]-z
例如在vim编辑状态,想跳出查找某个文件,则可以按ctrl+z将vim暂停放入后台。
-
查看目前后台的工作状态:
jobs
jobs输出目前后台的工作状态。
-
将后台的工作拿到前台来 fg
fg %jobnumber
或者fg
直接默认取出+号工作 -
将工作在后台的状态变成运行中:bg
bg %jobnumer