简述一些基础指令

tree命令 
tree -L 1 -d /用来查看目录结构 
-L 指定层数 
-d 只查看目录

/boot 跟内核有关的文件 grub 内核和BootLoader

├── bin 存放用户使用的基本命令(可执行程序,二进制文件) 不能单独分区的 
├── boot 跟内核有关的文件 grub 内核和BootLoader 
├── cgroup 用来资源限制资源隔离 docker 容器化 
├── dev device 设备文件 
b block device 块设备 硬盘或者CD-rom 随机读写 
c character device 字符设备 传真 鼠标 打字机 顺序读写 
├── etc 各种系统包括应用的配置文件 使用频率超五星 
├── home 每个用户的家目录 而且每个用户默认的工作目录
├── lib 程序包括系统所依赖的一些共享库文件及内核所依赖的模块文件 
├── lib64 系统程序所依赖的库文件 .so 结尾,(Windows .dll) 
├── lost+found 垃圾回收站 
├── media 光盘或者U盘挂载点 媒体介质挂载点 
├── misc 杂项 不好归类的东西 
├── mnt 临时文件文件挂载点 新建一个分区 
├── net 网络文件 
├── opt 第三方的应用安装位置 nginx tomcat Apache 
├── proc 伪文件系统 硬盘不存在,只存在于内存中,记录系统或者进程的运行 信息 cpuinfo 
├── root root的家目录 
├── sbin 存放管理类命令 也不能单独分区 
├── selinux 与selinux相关文件或者记录 
├── srv 系统运行产生的一些文件 
├── sys 伪文件系统 记录系统硬件的一些运行信息 
├── tmp 杂项,临时文件以及应用产生的临时文件 使用频率 5星 
├── usr 误以为user,Unix software resource 
/lib /lib64 存放库文件 
/bin /sbin 存放系统的一些二进制文件(可执行文件) 
/local 用来存放第三方的应用 
bin etc games lib lib64 libexec sbin share etc 
/share 用于存放帮助 
/etc/ 配置文件 
/include 主要用来存放头文件,对第三方应用做二次开发可能会用到 
/tmp 临时文件

└── var 日志存放以及应用产生的一些文件或者临时文件 邮件队列 (使用频率非常高) 
/var/log/message 系统日志 
/var/log/boot.log 系统启动时候产生的一些日志 
/var/log/dmesg 输出内核或者是硬件的一些有效信息,可以使用dmesg 
/var/log/mail.log 邮件产生的日志 
/var/log/cron 系统和我们自定义的计划任务的日志 
/var/log/btmp | wtmp用来记录系统登录成功或者失败的用户(跟系统安全相关的) 
使用last(登录成功的用户及IP)和lasb(登录失败的用户及IP)命令查看 
/var/log/secure 记录用户登录信息 
/var/log/lastlog 
/var/lib/mysql MySQL数据存放目录 
/var/mail 邮件存放目录 由于邮件服务 此目录可能会满 rsync(命令)使用一个空目录来同步有问题的目录 
/var/spool/cron 跟计划任务相关的内容

dmesg 查看启动时候的内核日志信息 
last(登录成功的用户及IP) 
lasb(登录失败的用户及IP) 
生产环境服务器暴露公网之中,经常会有网上的服务器去尝试登录我们的服务器,这时候需要用到lastb去查看哪些地址的服务器在扫我们的机器,然后把这些IP加入host_deny iptables 中。

CentOS 7上目录变化: 
bin和/usr/bin 目录合并 
lib和/usr/lib 目录合并 
lib64和/usr/lib64 目录合并 
sbin和/usr/sbin

二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin 
echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

配置文件:/etc, /etc/DIRECTORY, /usr/local/etc

帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

文件类型:

  • 普通文件 
    d directory目录文件 
    b 块儿设备 block 
    c 字符设备 character 
    l 符号链接文件 
    p 管道文件 pipe 进程间通信可能会管道 
    s 套接字文件socket 比如MySQL的套接字 本地客户端和服务器端互相通信使用socket,避免通过网络这种方式

pwd -L(默认) 
如果当前目录为链接路径的话,则显示链接路径 
[root@lyp bin]# cd /bin 
[root@lyp bin]# pwd -L 
/bin 
(/bin链接到/usr/bin下面) 
[root@lyp bin]# pwd -P 显示真实物理路径 
/usr/bin

绝对路径 
cd /usr/local/etc/ 
相对路径 
不以根目录为开始 以当前工作目录或者是某个其他目录为起始位置切换到另一个目录去

. 代表当前目录 
.. 上级目录

  • 代表上一级工作目录

pwd的两个环境变量 
echo $PWD

echo $OLDPWD

basename 脚本里获取文件的存放位置或者文件的全名 
[root@lyp etc]# dirname /usr/local/etc/my.cnf 
/usr/local/etc 
dirname 脚本里在指明路径的时候一般使用时绝对路径 
[root@lyp etc]# basename /usr/local/etc/my.cnf 
my.cnf

ls -l 
d rwxr-xr-x. 2 root root 4096 Mar 22 22:23 Downloads

  • rw-r–r–. 1 root root 51 Mar 24 10:02 hello.sh 
    文件类型 文件权限 链接数量 属主和属组 文件大小 最近的修改日期(mtime) 文件名称或者目录名称

PS 目录占用4096B 4096是系统的block大小

常用选项: 
-h 以人类可读的方式将文件或者目录大小显示出来 
-a 列出所有隐藏文件和目录 
-R 把当前目录下的目录的所有内容列出来(递归) 
-d 显示当前目录的详细信息,不显示目录下的内容

不常用选项: 
-A 列出所有隐藏文件和目录 除了.和.. 
-1 文件和目录名分行显示 
-S 把文件目录按照大小从大到小来排列 
-t 把文件和目录按照最近修改时间排列 从最新到最老的顺序排列

-u -t

文件三个时间戳 mtime atime ctime 
mtime 修改时间 Modify 
atime 最近访问时间 Access 
ctime 最近改变时间 Change 
文件创建之初,所有的时间戳都是一致的 
正常的情况下是访问一次,文件的atime就应该修改更新一次,系统加了一个新的特性 relatime

atime不会经常改变,只有在mtime比atime新的时候,再次访问文件atime 才会发生改变

mtime都会造成ctime修改 
修改文件的属性 比如文件的属主和属组的时候 ctime的修改 
使用编辑器打开文件也有可能造成atime的改变

使用touch -a修改文件(修改文件属性)的访问时间也会造成ctime的改变

mtime改变,ctime也会跟着改变 
修改文件属性或者权限,则ctime也会跟着改变 
atime并不会时时发生改变,只有当mtime比atime新的时候才会改变

echo “111” >> magedu.log 修改文件内容 
chown root magedu.log 修改文件元数据 
stat magedu.log 查看文件的三个时间属性

生产环境 mtime 只看文件的修改时间,使用ls -l查看文件或者目录的最新修改时间

stat 查看文件时间戳 
touch 原意是修改文件的时间戳,现在一般用来创建一个文件 
-m 修改mtime 也会造成ctime改变 
-c 修改ctime 
-a 修改atime 会造成ctime改变 
-t 结合-m 或 -c 或 -a 修改指定的时间 
-c 如果文件不存在 则不予创建

文件通配符 
*号 匹配任意所有字符的 
[root@lyp ~]# ls h* 
hello.sh hello.shbak

?号 匹配单个字符 
ls ???? 查看四个字符命名的文件 
[0-9]匹配数字 
[a-z] 字母 字母的顺序安装 a A b B c C… z Z 匹配的a-z 
[A-Z] 字母 字母的顺序安装 a A b B c C… z Z 匹配的A-Z 不要跟符号扩展混淆{A..Z} 
[wang] 匹配列表中的任何的一个字符 ls [wang]* 匹配的是w* a* n* g* 
[^wang] 匹配列表中的所有字符以外的字符 ls [^ab]* 查询除了a或者b开头的文件名

常用集中:

[:digit:] :任意数字,相当于0-9

[:lower:] :任意小写字母

[:upper:] :任意大写字母

[:alpha:] :任意大小字母

[:alnum:] :任意数字或字母

不常用的: 

[:blank:]: 匹配水平空白字符 touch ‘a b’ 
[:punct:]: 匹配标点符号 touch ‘a..b’ 
[:print:]:可打印字符 
[:cntrl:]:控制(非打印)字符 
[:graph:]:图形字符 
[:xdigit:]:十六进制字符

cp 
1 cp a b 复制一个文件并命名为b 
2 cp a tmp/ 把a复制到tmp/ 目录如果不存在会报错,如果tmp目录下a已经,则会提示是否覆盖 
cp: overwrite `tmp/a’? y 
3 cp a b c tmp/ 把多个源文件复制到tmp目录下 
4 cp 目录1 目录2 -r 递归 拷贝目录 
如果目录2不存在,则会把目录1重新拷贝一份并且命名为目录2 
如果目录2已经存在,则直接将目录1拷贝到目录2下面

-i 是否提示 默认支持 因为别名 
-r -R 递归复制目录及目录里所有的内容 
-d 复制的时候 如果目录有链接文件,则只复制链接文件 
-p –preserv 复制的时候将文件的属性一起复制 
-a = -pdr 
-v 复制的时候显示详细过程 
-f 强制复制,不管目标文件有没有

生产最常用选项是 cp -av 源文件 目标文件 
cp -avf 源文件 目标文件

注意: 任何删除操作或者是任何的覆盖操作之前要先执行cp进行备份

cp -avf a b 发现b已经存在,而且特别重要,所以在执行cp操作的时候一定要搞清楚想清楚在做什么

1 每天将/etc/目录下所有文件,备份到/testdir独立的子目录下,并要求子目录格式为 backupYYYY-mm-dd,备份过程可见 
cp -av /etc/ /testdir/backup-date +%F/

mv 移动或者命名 
mv a b 将a重命名成b a有可能是文件也有可能目录 
mv a bd/ 将源文件a移动到目录db下面

-f 如果目标目录已经存在同名文件,则强制移动过去,不提示

生产用的时候 mv -f 源文件 目标文件 
mv 垃圾文件 backup/

rm -rf 
-r 递归 
-f 强制删除 
一般使用的时候就是rm -rf

mkdir 创建一个目录 
-p 同时创建父目录和子目录 
-v 详细信息 
-m 直接指定目录权限

mkdir -pv /tmp/a/b/c/

rmdir 删除目录 
-p 
-v

由rm -r 所取代, 递归删除所有目录和文件

索引节点 inode 
索引式文件系统 根据inode去查找所有存放文件内容的块

1 —> 3—–> 5—-> 10 链式

“操作系统” inode

inode 系统上的inode号会用满 磁盘上存放的小文件非常多 
inode 是在磁盘格式化的时候已经确定

为什么空间明明没满,但是我的数据写不进去了?是因为小文件过多 造成inode用完了

数据拷出来,重新格式化分区,重新指定inode 
一个文件只能有一个inode

cp 操作就是生成一个新的inode 然后把源文件的数据复制过去,同时把新的inode指过去 
rm 删除的时候只是删除inode 数据还在 
执行删除操作之后 再存放一些垃圾文件 
/dev/zero dd in=/dev/zero of=/dev/xxx

mv的时候如果在同一个分区 那么mv的时候只是修改了文件路径 文件本身的inode没变

如果目标和源文件位于不同的分区(文件系统),可以理解为从Windows的C盘挪到D盘 
那么一般执行的是先cp后删除操作

链接:硬链接、软连接 
硬链接 
不能跨分区 
不能指向目录 
不同的文件路径指向同一块数据存储区域 
任何一个路径的删除都影响另外一个 
任何一方内容的修改 另外一方也会受到影响 
只有系统中某些比较的老的文件会用到硬链接,生产环境不会使用

软连接 
可以跨分区 可以指向目录或者是文件 
软连接里面存储是原来的文件路径 
如果真实的文件路径删掉之后,那么链接文件也失效 
存储真实的文件名的大小

-f 强制链接 无论原来的链接文件是否存在,强制它指向一个新的位置 
-n 把符号连接的目的目录视为一般文件

ln -snvf b a 
在版本发布的时候,可以使用软连接的方式直接修改指向 
目前来说 软连接使用的比较多

file 用来查看某个文件的文件类型 
-b 不显示文件名称 
-f a.txt 列出a.txt文件中所记录的文件对应的文件类型 
file -f m23-hard2

-F 定义分隔符 
-L 查看链接文件对应的文件

文件描述符 
创建文件的时候内核或者内存产生一个记录专门标识这个文件 fd(file descriptor) 
生产常见的故障 开发 打开一个文件没有执行关闭操作,文件描述符不停增加,内存可能会满 
文件描述符使用完了,这个时候就无法写文件。

三种最常见的文件描述符去标识我们的三个设备 
0 标准输入(STDIN) 默认键盘(指令和数据) 
1 标准输出(STDOUT) 默认终端(显示器) 
2 标准错误输出(STDERR) 默认终端(显示器)

I/O(IN Out)重定向 指的改变默认输入输出的位置

标准输出重定向 
[root@lyp test]# date > date.log 
[root@lyp test]# cat date.log 
Tue Mar 28 01:30:46 CST 2017 
标准错误输出重定向 
[root@lyp test]# fdfdfdfd > date.log 
bash: fdfdfdfd: command not found… 
[root@lyp test]# fdfdfdfd 2> date.log 
[root@lyp test]# cat date.log 
bash: fdfdfdfd: command not found… 
追加重定向 >> 
[root@lyp test]# fdfdfdfd 2>> date.log 
[root@lyp test]# fdfdfdfd 2>> date.log 
[root@lyp test]# fdfdfdfd 2>> date.log 
[root@lyp test]# cat date.log 
bash: fdfdfdfd: command not found… 
bash: fdfdfdfd: command not found… 
bash: fdfdfdfd: command not found… 
bash: fdfdfdfd: command not found…

&> 
[root@lyp test]# date &> date.log 
[root@lyp test]# cat date.log 
Tue Mar 28 01:33:55 CST 2017 
[root@lyp test]# datefdfd &> date.log 
[root@lyp test]# cat date.log 
bash: datefdfd: command not found…

标准输出重定向到date.log 标准错误输出重定向到date2.log 
[root@lyp test]# date22 > date.log 2> date2.log

&> &>> 将标准输出和标准错误输出(覆盖|追加)同一个文件 
[root@lyp test]# date &> date.log 
[root@lyp test]# cat date.log 
Tue Mar 28 01:40:48 CST 2017 
[root@lyp test]# date &>> date.log 
[root@lyp test]# 
[root@lyp test]# cat date.log 
Tue Mar 28 01:40:48 CST 2017 
Tue Mar 28 01:41:14 CST 2017 
[root@lyp test]# datefdfd &>> date.log 
[root@lyp test]# cat date.log 
Tue Mar 28 01:40:48 CST 2017 
Tue Mar 28 01:41:14 CST 2017 
bash: datefdfd: command not found…

(cal 2004;datefdfd) > date.log 
标准错误输出到终端 标准输出到date.log中

2> 

2>> 

&>

&>> 

2>&1 

< 标准输入重定向

tr命 使用频率为1星 
-d 
[root@lyp test]# tr ‘a-z’ ‘A-Z’ < /etc/fstab > FSTASB.log 
[root@lyp test]# tr -d ‘0-9’ < /etc/fstab 
-c 取指定字符的补集 
[root@lyp test]# tr -d -c ‘0-9’ < /etc/fstab 
tr -d ‘0-9’ < ./fstab > ./fstab 是不会成功的 
-s “s“ 对重复字符去重

cat >> beijing.log << EOF 
将标准的输入(下面的字)重定向到beijing.log

cat >> shanghai.log << ‘EOF’ 
where are you from,I’m from $SH 
EOF 
加引号与不加引号的区别 
加引号(双引号和单引号)输入内容里面的变量是不会被替换 
不加引号的话 输入的内容里面变量会被替换 
结束符不一定要使用EOF,可以使用其他任意字符。

写一个脚本 脚本定义个配置文件,执行脚本的时候自动生成自定义的配置文件

set 控制bash的特性 
set -C 禁止将内容覆盖到已经有的文件 特殊保护机制

管道 将一个命令的输出结果(标准输出|错误输出)作为另外一个命令输入 
通过管道我们整合很多命令提供非常强大的功能 
取前面命令的一个输出作为后面一个命令的输入 
比如将一个文件压缩之后再解压缩

tee 
-a 对日志文件的追加操作 
ls | tee -a baoding.log | tr ‘a-z’ ‘A-Z’ 
日志输出 | tee -a /tmp/logfile 
调试生产某个应用的时候,一方面我想要看标准输入的日志,一方面想把日志保存到某个日志文件里便于日后的排查

rzsz 从本地机器上传下载文件 
yum install lszrz ——-> rzsz

直接使用xshell 新建文件传输功能

dos2unix 把dos格式的文档转换为unix格式 
yum install dos2unix 
unix2doc 把unix格式的文档转换成doc格式

useradd 
-u 指定UID (默认500|1000开头) 
-o -u新建用户前不检查下指定的UID是否存在(一般不要使用这个选项) 
useradd -u 250 -o yonggege 
-g GID|组名 指明用户所属的基本组 (使用比较多) 
-G 指明用户所属的附加组 
-d 指定某个目录作为家目录,默认/home 
-s 指明用户默认的shell 默认/bin/bash 通常会指定/sbin/nologin(使用较多) 
-c “ ” 指定用户注释信息 
-r 新建系统用户 
-m 默认选项 创建用户家目录 
-M 不创建用户家目录

useradd -D 改变新建用户默认的选项 
GROUP=100 
HOME=/home 默认家目录 
INACTIVE=-1 密码失效日期,shadow第7列 
EXPIRE= 账号失效日期 第8列 
SHELL=/bin/bash 
SKEL=/etc/skel 家目录下面的隐藏文件的模板 
CREATE_MAIL_SPOOL=yes 是否创建一个邮箱账户


/etc/login.defs 关于新建用户的默认设置

newusers 
chpasswd 
for 循环

usermod 修改用户的属性

usermod 
usermod -U 解锁用户 sarah 
-L 锁定用户 (直接修改密码文件,加感叹号)

userdel 删除用户 
-r 删除用户家目录

id 显示用户信息 
-u UID 
-g GID 
-G 附加组

su switch user 用户切换 
不加 – 某些环境变量可能不会切换过去,等于是人过去了,行李还没过去 su xian 
加 – 行李和人都过去 生产推荐使用 su – xian

su -l USER === su – USER 
-c ’CMD‘ 以某个用户的身份执行CMD命令

单引号和双引号在执行单个命令的时候并没有什么区别,所有执行的命令里面包含” 建议外面使用“”

使用root切换到其他普通的时候 是不需要密码的 
但是普通用户切换到root或者切换到其他用户的时候是需要密码登录的 
su – root 用户名可以省略 但是仅限于root用户 
如果想切换到root用户不用输密码,可以只用visudoer编辑 
xian ALL=(ALL) NOPASSWD: ALL 
保存生效 
在执行sudo su –

生产用的方式:登录时候普通 如果用root 
sudo su -切换过去

passwd: 修改自己的密码

不常用选项: 
-l:锁定指定用户 
-u:解锁指定用户 
-e:强制用户下次登录修改密码 
-n mindays: 指定最短使用期限 
-x maxdays:最大使用期限 
-w warndays:提前多少天开始警告 
-i inactivedays:非活动期限

常用选项 
–stdin:从标准输入接收用户密码 
echo “PASSWORD” | passwd –stdin USERNAME 
echo “123456” | passwd –stdin xian 
chage -d 0 xian 要求用户在第一次登陆的时候必须强制一定要修改密码

echo “P@w注意字符串有一个符号 会把后面的内容给替换成变量 而这个变量为空,所以切记改密码的时候要使用单引号 强引用

要注意的事情是:改完密码之后,当前的终端不能立即退出,改为先验证下密码是否改成功,如果成功再退出。

scp 命令 
scp baoding.log 172.16.252.100:/tmp 
命令 文件 IP:/tmp

scp -r test 172.16.252.100:/tmp 
传递目录的 
-P 端口号

rsync -avz 源文件 目标地址:/tmp 基于SSH协议 
rsync 以服务的形式运行

useradd -M 
虽然/etc/passwd 有/home/username 这一项 
但是家目录下/home/username 这个目录并不存在 
一般用来创建一个系统管理用户,不用登陆的,也不需要家目录 
useradd -s /sbin/nologin -M apache

useradd -D -s|b|g 一般很少改

usermod

id root (使用频率4星)(先了解) 
-u -g -G (写脚本的时候使用)

写脚本的时候必须有一个执行者 可以使用id 
id -u 
首先要判断我的脚本的执行者是否是root 
如果是脚本继续执行 
如果不是 则报错退出,提示必须使用root用户才能执行 
USERID=id -u 
echo $USERID

su 
1 su – username 切换到某个用户 
2 su – zhengzhou -c ‘whoami’ 以某个用户的身份去执行某个命令 
sudo 机制

一个简单的脚本

chage [OPTION]… LOGIN 
-d LAST_DAY 最近一次更改密码(3) (使用较多) 
-E –expiredate EXPIRE_DATE账号失效日期(8) 
-I –inactive INACTIVE密码失效日期(7) 
-m –mindays MIN_DAYS最短使用天数(4) 
-M –maxdays MAX_DAYS最大使用天数(5) 
-W –warndays WARN_DAYS失效前警告时间(6)

groupadd 新建用户组 
-g -r

groupmod 修改组信息 
-n 新的名字 
-g 新的GID

groupdel 首先删除对应的用户 然后才能执行对应的组的删除操作 
gpasswd 给组新建一个秘密

[zhengzhou@CentOS68 ~]基本组和附加组newgrp root 切换基本组和附加组 
[zhengzhou@CentOS68 ~] touch shangjie 
[zhengzhou@CentOS68 ~]$ ll shangjie 
-rw-r–r–. 1 zhengzhou root 0 Mar 31 11:07 shangjie

groupmems 
-g 组 -a 用户名 
-g 组 -d 删除 
-g 组 -p 清空 
-g 组 -l 列出组内所有的用户 
groupmems -g shanxi -a hanzhong

groupadd 添加一个组 相对多


rw- r– r–. 1 root root 0 Mar 27 11:34 Bbb 

属主 属组 其他人

三种操作形式 

读 r read 
写 w write 
执行 x excute

chown 修改文件的所有者 
chown 用户名 haerbin 修改文件的属主 
chown 用户名:组名 haerbin 修改文件的属主和属组 
chown 用户名.组名 haerbin 修改文件的属主和属组 
chown .组名 haerbin 修改文件的属组 
chown :组名 haerbin 修改文件的属组

-R 用户名:组名 目录 递归修改目录的权限以及目录下所有的文件的权限

没有 -r

chgrp 修改文件的属组

针对文件来说 
r 使用工具cat nano去看文件里面内容的权限 
w 可以修改文件的内容 
x 二进制程序以及脚本需要发起系统调用 去运行一个结果 
windows .exe .vbs .bat可执行

针对目录来说 
r 是否可以查看目录里面的内容 有r权限的话 可以使用ls -l 
w 对目录里面是否可以创建文件或者目录 和是否可以删除文件或者目录 
x 目录的进入权限

rwx rwx rwx 
属主 属组 其他人 
u (user) g(group) o(other)

a(all)

u + r|w|x 
g + r|w|x 
o + r|w|x 
a + r|w|x

chmod u+r 
chmod a|u|g|o +|- r|w|x 
chmod xxx(数字) 
修改文件权限

-R递归修改

600 使用加密解密时候用到的key 
以及生产web服务加密的时候用到的证书

目录权限默认是755 
文件权限默认是644

反掩码 
umask 永久生效 一般是去/etc/bashrc 文件(全局生效) 
~/.bashrc (仅对当前用户生效) 
022 
目录 rwx rwx rwx

uamsk — -w- -w- 
rwx r-x r-x 
7 5 5

文件 rw- rw- rw-

umaks — -w- -w- 
-rw –r –r 
6 4 4

不能这么计算: 
777-022=755 
666-022=644

[root@CentOS68 ~]# umask -S 
u=rwx,g=rx,o=rx 
[root@CentOS68 ~]# umask -p 
umask 0022

SUID (只能作用于文件) 特殊用户权限 
一旦某个文件(通常是可执行文件)有了特殊用户权限(SUID) 
那么其他用户就可以以文件拥有者的身份去执行这个文件 
chmod u+s install.log 
chmod 4644 tianjin 
注意 有s S 之分 
s 原来文件已经有执行权限了,加SUID之后,那么文件的权限就是 
-rwsr-xr-x. 1 root root 97 Mar 31 10:46 useradd.sh 
S 如果原来的文件没有执行权限,那么加上SUID之后,文件的权限就是 
-rwSr–r–. 1 root root 57094 Mar 22 18:25 install.log

SGID (作用于文件或者目录) 特殊组权限 
对于文件来说 一旦某个文件(可执行)有了特殊组权限(SGID) 
那么其他用户可以以文件拥有组的身份去执行这个文件 
对于目录来说 可以实现团队协作 (少用) 
chmod g+s tianjin 
chmod 2644 tianjin

sticky 黏滞位 作用于目录 
任何人可以对目录里面的内容进行新建或者删除的操作,但是只有文件的创建者才可以去删除自己的文件 
/tmp 
说白了 谁干的谁可以清除 其他不行 
t 在原来的可执行权限上加 
T 原来没有可执行权限 
chmod o+t 目录 
chmod o-t 目录

平时系统上 SUID 和Sticky两种权限用的比较多 
SGID 比较用的比较少

生产环境 SUID SGID sticky

cat 查看一个文件

-E: 显示行结束符$ 
-n: 对显示出的每一行进行编号 
-A:显示所有控制符 
-b:非空行编号 
-s:压缩连续的空行成一行

cat -sn changping.log

频繁使用的是 cat -An 文件名

tac 倒着看某个文件

more 分页查看文件 
less 一页一页查看文件内容

head -n 10 文件名 
-10 文件名

cat 文件名 | head

tail 显示文件后面的内容 
tail -n 10 
tail – 10 
-f 实时查看文件的最新变化 排查故障的时候 =tailf

cut 切割文本按要求输出文本 
cut -d”:” -f1-5 /etc/passwd

df -h | awk ‘{print $3}’ 
echo “12345” | cut -c2-5

paste 把两个文件合并成一个文件 
-s 两个文件的同一行合并成一行

wc 
查看文件里面的内容有多少行 多少个字节 字符 字数 
wc -l 会经常用到

[root@CentOS68 ~]# cat /etc/passwd | wc -l 
50 
[root@CentOS68 ~]# wc -l /etc/passwd 
50 /etc/passwd

QPS 每秒的访问次数 
TPS 每秒的事务数

QPM 每分钟的访问次数 
PV Page View 
和UV User View

sort 把文本安装顺序来显示 
-r 逆序 
-n 按照数字大写 
-f 忽略字符串大小写 
-t “c” 以后面的字符作为分隔符 
-k 选择某个字段 进行排序

uniq 去重 
-c 显示每行重复出现的次数 
-d 仅显示重复 
-u 显示不重复

diff 比较两个文件的异同

diff -u a文件 b文件 > a.diff 
path -b b < b.diff

diff -u foo.conf-broken foo.conf-works > foo.patch 
$ patch -b foo.conf-broken foo.patch

原创文章,作者:木,如若转载,请注明出处:http://www.178linux.com/72461

评论列表(1条)

  • renjin
    renjin 2017-04-05 16:10

    主要总结的linux 下基础常用的一些命令,总结的非常详细,如果排版能够好一些,就更好了