Linux笔记

Linux笔记

2018年 01月 20日 星期六 17:28:24 CST

改变文件的属性与权限

  • chgrp 用户组 文件夹||文件 :

改变文件所属用户组

- `-R` 递归到所有子文件
  • chown 用户名 文件夹||文件 : 改变文件所有者

    • 通过 用户名:用户组 可以达到同时修改用户名和组的效果
    • -R 同上
  • chmod 权限码||权限字符串 文件夹||文件 :

改变文件的权限

- 权限码:

```
	r : 4
	w : 2
	x : 1
```

如, `-rw-r-----` 则为,640

- 权限字符串:

```
	u g o a : 分别表示用户、组、其他、全部
	+ - = 	: 分别表示增加、减去、设置值
	r w x	: 权限
```	

如, `chmod u=rw,g+x,o-rwx 文件名`

- `-R` 同上

文件与目录管理

  • mkdir || rmdir : 创建目录与删除空目录

    • -p 创建||删除连续目录
      如, mkdir a/b/c
  • cp 源文件||目录 目标目录 : 复制文件夹||文件

    • -p 可以保持原来文件的信息
    • -r 可以递归复制子目录
    • -a 相当于 -pdr,备份时常用
    • -u 目标文件比源文件旧则覆盖
    • -d 要复制的文件是链接文件时,复制链接而不是本体(默认复制本体)

2018年 01月 20日 星期六 23:18:32 CST

2018年 01月 22日 星期一 21:53:40 CST

Linux系统中文件的时间

修改时间(mtime) 文件内容被修改的时间
状态时间(ctime) 更改文件权限时等的时间
取用时间(atime) 文件内容被读取的时间
  • touch 文件名 : 创建空文件

    • -d 改变atime和mtime 如,touch -d "2 days ago" 文件名
    • -t 同上 如,touch -t 180122 文件名
  • umask 权限码 : 查看与修改当前用户的默认权限

    对于文件来说,由于去掉了 x 所以最大为666,为减去当前值之后的,如 0022 就是 -rw-r--r--

    目录的话最大为777,如 0022 就是 drwxr-xr-x

    • -S 以字符串形式显示
  • chattr : 设置文件的隐藏属性(root)

    • +a 只能添加数据不能修改删除
    • +i 不能被删除

取消的话把 + 变成 -

  • lsattr : 列出文件的隐藏属性

  • file 文件名 : 查看文件是何种格式

  • which 命令名 : 查找命令的可执行文件目录

  • whereis 文件名 : 查找文件

    • -b 只找二进制文件
    • -m 只找手册文件
    • -s 只找代码源文件
    • -u 非以上三种
  • locate 文件名 : 查找文件

    • -i 忽略大小写
    • -r 使用正则表达式

有空看看 find 命令的用法,现在不想看了…

2018年 01月 22日 星期一 22:54:17 CST

2018年01月23日 19:22:43

磁盘与文件系统管理

  • df : 显示目前挂载的设备的使用状况

    • -h 以更易读的MB等格式自动显示
    • -i 不用硬盘容量,用inode来显示
  • du 目录 : 列出占用空间大小

    • -sm 当前目录并以MB显示
  • ln 源文件 目标文件 : 为文件(目录)创建连接

    • 默认什么也不输是硬链接,不能连接目录
    • -s 软连接,类似快捷方式

2018年 01月 24日 星期三 14:08:40 CST

  • fdisk : 磁盘分区管理工具

    直接执行

    • -l 列出所有分区

    独占模式

    • p 打印分区
    • d 删除分区
    • n 新建分区(建分区时,在结束扇区时通过 +xxM 的方式指定大小)
  • mkfs -t 文件系统格式 设备名 : 分区格式化

    如,mkfs -t ext3 /dev/sda1

  • partprobe : 让内核更新分区表

  • 修改卷标

    • e2label device [newlabel] :ext文件系统

    • dosfslabel device [label] :fat文件系统

    • ntfslabel [options] device [label] :nt文件系统

  • fsck -t 文件系统格式 设备名 : 磁盘检查工具

    • -f 强制检查
    • -C 检查过程使用直方图显示
  • badblocks 设备名 : 坏道检查

    • -s 在屏幕上列出进度
    • -v 可以在屏幕上看到进度
  • mount 设备名 挂载点 : 挂载设备

    • -a 检查fstab是否有问题
    • -o 附加参数,如,-o remount,rw,auto /home 可以重新挂载
      • -o loop 挂载iso文件
    • --bind 可以将目录挂载到目录上
  • 查看分区的UUID

    • blkid

2018年 01月 24日 星期三 17:51:43 CST

Thu 1 Feb 16:42:21 CST 2018

文件系统压缩与打包

  • gzip 文件 : 压缩文件

    • -v 显示压缩比等信息
    • -d 解压
    • -c 重定向输出流
    • -? "?"为1~9的数字,1最快压缩比最差,9反之
    • -k 保留源文件不删除(默认删除)
  • zcat 文件 : 打印压缩后的文本文件

  • bzcat 文件 : 同上

  • bzip2 文件 : 压缩文件

    • -z 压缩
    • -d 解压
    • -c 重定向输出流
    • -k 保留源文件不删除
    • -v 显示压缩比等信息
    • -? 同gzip
  • tar : 打包

    • -c 新建打包文件
    • -t 查看压缩包包含的文件名
    • -x 解压缩

    -c -t -x 三个参数互斥

  • -j 通过bzip2进行压缩

    • -z 通过gzip进行压缩
    • -v 处理过程中显示文件名
    • -f 后接生成的压缩包名
    • -C 后接解压到的目录
    • -p 保持原来文件信息(三个时间、权限什么的)

tar常用套路

  • 压缩 tar -jcv -f 压缩包名.tar.bz2 源文件||目录

    • 打包时排除某个文件||目录 加参数 --exclude=文件名||目录
  • 查看 tar -jtv -f 压缩包名.tar.bz2

  • 解压 tar -jxv -f 压缩报名.tar.bz2 -C 解压到的目录

    • 解压特定文件 在上述解压命令的待解压文件后加上文件名即可(路径要正确)

Thu 1 Feb 18:30:21 CST 2018

2018年 02月 03日 星期六 15:03:41 CST

  • mkisofs : 创建光盘映像

    • -o 后接要生成的镜像名
    • -v 显示过程信息
    • -r 支持unix文件,存更多信息
    • -m 后接文件名,排除文件
    • -graft-point 多文件夹操作时,重新指定目录

mkisofs套路演示

mkisofs -rv -o 位置/文件名 -m 排除文件 -graft-point /root=/root

这样会将iso文件保存到 -o 参数后指定的位置,排除了 -m 参数后的文件,然后在iso的根目录建立了文件夹 root 来存 /root 下的内容

Vim编辑器

  • 块选择

    • v : 字符
    • V : 行
    • ctrl+v : 块
  • 撤销、重做

    • u : 撤销
    • ctrl+r : 重做

Bash

  • alias : 命令别名

    • 别名=原命令 : 设置别名 如, alias ll='ls -l'
  • unalias : 取消别名

  • type 命令 : 查看命令类型

2018年 02月 03日 星期六 18:30:41 CST

Mon 5 Feb 15:24:32 CST 2018

  • 变量规则

    • 任何变量名默认是空
    • 定义变量时直接 变量名=变量内容 即可(等号两端不能有空格),调用时需要 $变量名
    • 如需定义带空格的内容,可用 '" 将内容括起来
      • (有点像PHP)单引号内的内容不做解析,但双引号里的变量调用形式会被解析,如:
      a="lang is $LANG"
      echo $a
      结果为: lang is en_US
      
      b='lang is $LANG'
      echo $b
      结果为: lang is $LANG
      
    • 支持 \ 转义
    • 通过 `命令` 或者 $(命令) 来将别的命令的输出来作为输入
    • 字符串拼接直接拼接不用加 +
    • 变量的生存空间是子进程(比如一个终端窗口),所要要想从它的子进程访问需要设置成环境变量 export 变量名
    • unset 变量名 销毁一个变量
  • env : 查看环境变量

  • set : 查看所有变量

  • locale : 查看语言包

  • read 变量名 : 从用户输入给变量赋值

    • -p 后接字符串可以显示提示信息
    • -t 后接秒数,超过则略过
  • declare 变量名 : 声明变量(或常量)

    • -i 声明整型变量(变量默认为字符串类型)
    • -a 声明数组变量
    • -x 声明全局(环境)变量
    • -r 声明常量

    可通过±来增加去除属性

    • -p 打印变量的属性
  • ulimit : 限制用户可以使用的系统资源

  • history : 查看命令历史

    • -n 后接数字,列出最近n条
    • -c 清除历史
    • -r 后接文件名,读入指定文件内的历史命令
    • -w
    • -a 追加
  • ! : 执行命令历史中的命令

    • 数字 执行第几条
    • 执行上一条
    • 字符串 执行以此字符串开头的最近一次命令

命令执行的优先级

  1. 以相对或绝对路径执行的命令
  2. 由alias找到的命令
  3. bash内置的命令
  4. 通过$PATH找到的第一个命令

登录的欢迎信息

  • 登录前的放在 /etc/issue和/etc/issue.net

  • 登录后的放在 /etc/motd

  • source 文件名 : 立即使bash配置信息生效

    • ~/.bashrc 对non-login shell
    • ~/.bash_profile 对login shell

通配符

  • [] : 其中必有一,如 [abc] 必有abc中的一个
  • [-] : 编码顺序之间的字符,如 [0-9] 则表示0-9的所有字符
  • [^] : 表示取反,如 [^abc] 表示除abc之外的一个字符

数据流重定向

  • stdin : 0 使用<(覆盖)或<<(追加)
  • stdout : 1 使用>或者>>
  • stderr : 2 使用>或者>>

同样标准输出的重定向是 <<< 后者是输入特殊字符的方式,比如 << "eof"

Mon 5 Feb 18:24:32 CST 2018

2018年 02月 09日 星期五 18:03:19 CST

利用数据流的重定向可以使命令的执行结果被传递到其他地方,典型应用是通过 2> /dev/null 忽略错误输出

命令的条件执行

  • ; : 一次执行多条语句

  • ||&& : 因为其特殊的求值规则,故可配合 $? 把命令的返回值当做左参来判断右参执行与否

如:ls ~/aaa || mkdir ~/aaa 如果没有 aaa 目录则创建一个

管道

  • [命令的标准输出] | [命令的标准输入]

如:ls | grep aa 把ls的输出给了grep的输入

管道会默认过滤stderr

  • cut : 分割字符串,择其少许输出

    • -d '分割符' -f [类似数组下标] 以-d指定的分隔符将字符串分割成数组,再以-f指定的下标输出

    • 如:echo $PATH | cut -d ':' -f 3,1 会先输出第1个再输出第3个

    • -c [范围] 分割成字符数组

    • 如:echo $PATH | cut -c 2-10 就会打印出下标为2-10的字符(范围必须>=0)

  • sort : 排序(默认以字典顺序排)

    • -f 忽略大小写

    • -b 忽略前缀空格

    • -M 用月份名排序

    • -n 用纯数字排序

    • -r 反向排序

    • -u 重复数据只显示一次(调用uniq)

    • -t 指定分隔符(默认是tab)

    • -k 指定特定排序区间

    • 如:cat /etc/passwd | sort -t ':' -k 3 -n: 为分隔符,按第三列排序

  • uniq : 取出重复内容的一次

    • -i 忽略大小写
    • -c 计数
  • wc : 统计行数、单词数、字符数

    • -l 仅显示行
    • -w 仅显示单词
    • -m 仅显示字符
  • tr : 删除或替换文字中指定的字符串

    • -d 删除跟在其后的字符串
    • -s 替换跟在其后的字符串
  • col : 将tab转换成空格

    • -x 如上所述
  • join : 相同标志的数据归为一类,然后去重留一显示这一类数据

    • -t 设置分隔符
    • -i 忽略大小写
    • -[?] ?为数字,用哪段数据分析
  • paste : 直接将两个文件粘在一起,中间用tab间隔

  • expand : 也是将tab转换成空格,unexpand往回转

  • split : 将大文件切割成小文件

    • -b 想要切割成的文件大小上限,如 -b 300k
    • -l 以行数来进行切割
  • xargs : 将它的标准输入作为它参数的参数

  • - : 当某些命令有参数时,在最后一个参数前加上 - 在后边的命令后也加上 -,表示取前输出当后输入

2018年 02月 10日 星期六 02:29:39 CST

2018年 02月 10日 星期日 17:12:30 CST

正则表达式

  • 特殊字符——防止编码规则造成兼容性问题(外层中括号是特殊字符的一部分)

    • [:alnum:] 英文大小写字母及数字
    • [:alpha:] 英文大小写字母
    • [:blank:] 空格与TAB
    • [:cntrl:] 控制符
    • [:digit:] 数字
    • [:graph:] 除空格与TAB之外的其他字符
    • [:lower:] 小写字母
    • [:upper:] 大写字母
    • [:print:] 任何能被打印出来的字符
    • [:punct:] 标点符号
    • [:space:] 空白符
    • [:xdigit:] 十六进制数
  • grep : 提取关键字

    • -v 取反

    • -A 后边加数字,除了列出匹配到的行还列出后边n行

    • -B 后边家数字,除了列出匹配到的行还列出前边n行

    • --color=auto 自动显示颜色

    • -n 显示行号

    • -i 忽略大小写

    • \ 转义

    • [关键字] 中括号表示关键字表中任意一个字符

    • [^] 反选

    • [?-?] 表示范围

    • ^ 行首标记

    • $ 行尾标记

    • . 任意一个字符

    • * 其前字符有0到无穷个重复

    • 套路 : 表示任意字符 .*

    • \{?\} 中间的?表示数字,限制前边内容的匹配个数(逗号表示序列)

  • 基础正则表达式字符

    • ^word 待匹配字符"word"在行首
    • word$ 待匹配字符"word"在行尾
    • . 任意一个字符(包括空白符)
    • \ 转义字符
    • * 重复它前边的字符0或无穷多次
    • [???] 从它其中任意一个字符匹配
    • [?-?] 从它指定的序列中任意匹配一个字符
    • [^?] 取反?
    • \{?,?\} (转义是因为大括号在shell中有特殊含义),匹配前一个字符?到?次
  • sed [参数] [动作] : 行内容操作命令

    • -n 安静模式,只输出被处理的数据
    • -e 在命令行处理(默认),命令多于1个则必加
    • -f 从文件读取规则
    • -r 扩展正则表达式支持
    • -i 直接操作文件
    • 动作:?,?动作(需加引号)
      • ?,? 指明操作范围
      • a 新增
      • c 替换
      • d 删除
      • i 插入
      • p 打印
      • s 替换 s/源字符串/目标字符串/g

提取ip的例子

ifconfig | \
grep 'inet ' | \
sed 's/^[[:blank:]]*[^[:digit:]]*//g' | \
sed 's/ .*$//g' | \
sed 's/127.0.0.1//g' | \
grep '[[:digit:]]'

2018年 02月 11日 星期日 01:10:29 CST

Sun 11 Feb 17:49:57 CST 2018

扩展正则表达式

  • 扩展正则表达式字符

    • + 重复前一个字符1或无穷多次
    • ? 0个或1个前一个字符
    • | 逻辑或
    • () 多字符多选一
    • ()+ 多字符重复
  • printf : 格式化输出

类似c语言的printf()函

  • awk ‘条件{动作}’ : 条件数据分段处理
    • NF 内置变量,列数
    • NR 内置变量,行数
    • FS 内置变量,分隔符
    • BEGIN 内置条件,可用于变量赋值

如:

cat /etc/passwd | \
awk 'BEGIN {FS=":"} $3<10 {print $1 "\t" $3}'

bin		2
sys		3
sync	4
games	5
man		6
lp		7
mail	8
news	9
  • diff [旧文件] [新文件] : 比较文件或目录之间的不同
    • -b 忽略空白符区别
    • -B 忽略空白行区别
    • -i 忽略大小写区别
    • -u 像git的diff那样显示加减

shell script

  • 声明用什么shell:#!/bin/bash

Sun 11 Feb 23:35:57 CST 2018

2018年 02月 14日 星期三 20:29:00 CST

Ubuntu中默认 shdash 的连接文件,并不是 bash !

条件判断的实现

  • test : 测试文件

    • -e 文件名是否存在
    • -f 文件名存在且为文件否
    • -d 文件名存在且为目录否
    • -b 文件名存在且为block设备否
    • -c 文件名存在且为character设备否
    • -S 文件名存在且为Socket文件否
    • -p 文件名存在且为FIFO文件否
    • -L 文件名存在且为连接文件否
    • -z 判断字符串是否长度为0
  • [] : 中括号判断(要注意中括号两侧留空格)

[ $a == $b ]

  • 命令行参数 : 由变量$0,$1,$2…表示

    源代码:

    echo $0
    echo $1
    echo $2
    

    执行效果:

    bash 1.sh aa
    1.sh
    aa
    
    bash 1.sh aa bb
    1.sh
    aa
    bb
    
    • $# : 命令行参数的个数
    • $@ : 全部命令行参数
    • shift [数字] : 从头弹出指定数字个参数
  • if语句

形式:

if [ 条件 ];then
	...
elif [ 条件 ];then
	...
else
	...
fi

后边只要是具有判断性的东西就行了,中括号或者 test

数值比较套双层小括号

  • case条件分支

形式:

case 待测变量 in
	条件1)
		语句
		;;
	条件2)
		语句
		;;
esac
  • 函数

形式:

function 函数名(){

}

参数同上命令行参数用$#等调用

返回值通过 echo 实现,调用时加 $() 即可

  • while循环

形式:

while 执行的条件
do
	语句
done
  • until循环

形式:

until 停止的条件
do
	语句
done
  • for in循环

形式:

for 变量名 in 集合
do
	语句(可调用上变量名定义的变量)
done
  • for循环

形式:

for ((i=0; i<10; i=i+1))
do
	语句
done

2018年 02月 14日 星期三 22:48:10 CST

2018年 02月 16日 星期五 14:12:27 CST

账号管理与ACL权限设置

Linux中的用户与组,是通过UID和GID来实现的。而passwd和group文件就像一个映射表一样,规定了每个ID的(别)名。

passwd文件的结构

root	:x:0:0		:root:/root:/bin/bash
daemon	:x:1:1		:daemon:/usr/sbin:/usr/sbin/nologin
bin		:x:2:2		:bin:/bin:/usr/sbin/nologin
sys		:x:3:3		:sys:/dev:/usr/sbin/nologin
sync	:x:4:65534	:sync:/bin:/bin/sync
games	:x:5:60		:games:/usr/games:/usr/sbin/nologin
man		:x:6:12		:man:/var/cache/man:/usr/sbin/nologin
lp		:x:7:7		:lp:/var/spool/lpd:/usr/sbin/nologin
mail	:x:8:8		:mail:/var/mail:/usr/sbin/nologin
news	:x:9:9		:news:/var/spool/news:/usr/sbin/nologin

如上所示,由 : 分割,共7个字段,各字段的含义分别是:

用户名 : 密码 : UID : GID : 说明 : 主文件夹 : shell

  • UID
    • 0 : 系统管理员
    • 1-499 : 系统账号
      • 1-99 : 由发行版系统自行创建的系统账号
      • 100-499 : 用户可使用的系统账号
    • 500-65535 : 可登录账号

shadow文件结构

共9个字段,含义如下:

用户名 : 密码 : 最近改密码的日期 : 密码不可被改动的天数 : 密码需要重新更改的天数 : 密码需要更改期限的提前警告天数 : 密码过期后的失效天数 : 账号失效日期 : 保留

密码字段若为 则表示无合法密码

group文件结构

共4个字段,含义如下:

组名 : 组密码 : GID : 此组组员

有效用户组与初始用户组

  • groups : 查看有效支持用户组
    • 第一个即是有效用户组,后边的即是支持用户组

通常,有效用户组的表现是,在创建文件的时候,文件默认归属组,就是有效用户组

  • newgrp [有效组名]: 切换当前用户的有效组
    • 这个命令一旦执行,便会进入一个新的shell

账号管理

  • useradd : 添加用户

    • -D 查看默认值
    • -u 后接数字,即直接指定UID
    • -g 后接组名,即直接指定初始组(有效组)
    • -G 后接组名,即还可加入的组
    • -M 强制不创建用户文件夹(系统用户默认)
    • -m 强制创建用户文件夹(普通用户默认)
    • -c 给用户的说明(passwd文件的第5个字段)
    • -d 给用户指定非默认用户文件夹(必须绝对路径)
    • -r 创建一个系统账号
    • -s 后接一个shell,默认为 /bin/bash
    • -e 后接日期,格式为 YYYY-MM-DD,即账号失效日期
    • -f 指定密码是否会失效,0立即失效,-1永不失效(密码过期只会强制重新设置而已)

    添加用户会默认创建一个和用户名一样的组名

    默认的useradd做以下几件事:

    1. 在passwd中创建一行与账号相关的数据
    2. 在shadow中将此账号信息填入,但是没有密码
    3. 在group中加入一个与账号相同的组名
    4. /home/ 下创建一个用户文件夹,默认权限700
  • passwd : 设置用户密码

    • --stdin 通过管道来的数据作为密码
    • -l lock之意,会在shadow文件第二列加上 ! 使密码失效(让用户暂时无法登录常用)
    • -u 与l对应,解除锁定
    • -S 列出当前账号在shadow文件中的大部分信息
    • -n 密码不可修改的天数
    • -x 必须更换密码的天数
    • -w 密码过期前警告的天数
    • -i 密码失效的日期
  • chage [参数] [用户名] : 更好用的管理密码的工具

    • -l 列出该用户名的详细信息
    • -d 后接日期,修改最近一次改密码的时间
    • -E 后接日期,账号过期日期
    • -I 后接日期,密码失效日期
    • -m 两次改密码间隔的最小天数
    • -M 两次改密码间隔的最大天数
    • -W 密码过期前的警告天数

套路:第一次登录后便必须改密码

chage -d 0 用户名

  • usermod [参数] [用户名] : 调整账户设置
    • -c 改账号的说明
    • -d 改账号的用户文件夹
    • -e 改账号失效日期(格式 YYYY-MM-DD
    • -f 改密码过期后的失效天数
    • -g 更改初始用户组
    • -G 设置账号的附加用户组(是修改不是追加)
    • -a 配合-G使用,增加附加用户组
    • -l 后接用户名,修改用户名
    • -s 后接shell的绝对路径,更改用户默认shell
    • -u 改用户的UID
    • -L 暂时锁定用户
    • -U 解锁用户

套路:追加用户到组
usermod -aG 组名 用户名

  • userdel : 删除用户

    • -r 连用户文件夹也删掉
  • id : 查询用户的信息

  • groupadd : 增加用户组

    • -g 后接数字,指定GID
    • -r 新建系统用户组
  • groupmod : 更改组信息

    • -g 修改GID
    • -n 修改组名
  • groupdel : 删除用户组

    • 没人使用才能删除

2018年 02月 16日 星期五 17:09:07 CST

2018年 02月 17日 星期六 23:28:39 CST

ACL

  • dumpe2fs -h [设备名] : 查看文件系统是否支持ACL

临时使文件系统支持ACL:

mount -o remount,acl /
mount [设备名] on / type etx4 (rw,acl)

开机自动生效:

vi /etc/fstab
... default,acl ...

即在default后边加上一个acl

  • getfacl : 查看文件/目录的ACL设置

  • setfacl [参数] [acl参数] [文件名] : 设置文件/目录的ACL设置

    • -m 添加后面的acl参数给文件
    • -x 删除后面的acl参数给文件
    • -b 删除所有的acl参数
    • -k 删除默认的acl参数
    • -R 递归子目录
    • -d 设置默认acl参数,仅对目录有效,即此目录创建的文件自动获得

2018年 02月 17日 星期六 23:50:39 CST

例子:给特定用户/组添加特定权限

setfacl -m u:joe:rw 1.c
setfacl -m g:www-data:w 1.c

无用户列表表示设置所有者的权限

getfacl 1.c

# file: 1.c
# owner: root
# group: root
user::rw-
user:joe:r--
group::r--
mask::r--
other::r--

权限中的mask与所有通过ACL设置的权限取交集

用户身份的切换

  • su : 切换用户

    • 后边啥也没有,以nonlogin-shell方式切换到root,一些列环境变量等都是之前用户的
    • - 以login-shell方式切换到root
    • -l 类似-,但是后边可以指定用户
    • -m/-p 使用目前环境设置,不重新读取配置文件
    • -c 仅执行一次命令,后加要执行的命令
  • sudo : 以别的用户的身份执行命令

    • -b 让系统执行命令,而不与当前shell产生影响
    • -u 指定用户

sudoers设置

visudo命令,可以检查语法

文件格式

[用户名] [主机名]=(可切换的身份) [可执行的命令]

起始位置加 % 表示组

查看用户登录状况的一组操作

  • who
  • w
  • lastlog
  • lastme

用户间交流通讯的工具

  • write [用户名] [pts/tty] 内容 : 向指定用户发送消息
  • wall 内容 : 向所有用户发送消息
  • mesg : 查看信息接收状态
    • n : 关闭接收状态(root例外)

检查用户文件、组文件是否正确

  • pwck
  • grpck

2018年 02月 19日 星期一 00:01:33 CST

2018年 02月 21日 星期三 00:25:29 CST

Quota

给特定用户/组设置最大可用空间,具体略

磁盘阵列

数据安全或者扩容,具体略

LVM

分区大小弹性增减,具体略

2018年 02月 21日 星期三 01:02:38 CST

2018年 02月 24日 星期三 22:50:00 CST

计划任务

  • at [参数] 时间 : 仅执行一次的计划任务、

    • 权限控制
      • /etc/ 下可能有 at.allowat.deny,用以控制权限
    • -m 无论如何执行完后给调用者发邮件
    • -l 相当于 atq 列出目前系统上所有用户的at调度
    • -d 相当于 atrm 取消一个在调度中的at工作
    • -v 使用明显的时间格式列出at调度列表中的工作
    • -c 后接工作号码,可列出该工作的实际执行命令
    • 时间格式
      • HH:MM : 在今天此时分执行,若过了则明天
      • HH:MM YYYY-MM-DD : 强制在某天时分执行
      • HH:MM + ? [时间单位] ?为数字,表示指定时间过去指定时间后执行
  • batch : 系统有空闲时才在后台执行(其他操作和at一样)

  • cron : 循环执行计划任务,具体用到再查

2018年 02月 25日 星期日 00:19:35 CST

2018年 02月 25日 星期日 18:23:42 CST

进程前后台管理

  • & : 让程序在后台执行

  • [ctrl] z : 将当前程序放到后台并暂停

  • jobs : 查看后台程序状态

    • -l 列出后台程序的详细情况(PID)
    • -r 仅列出正在后台执行中的程序
    • -s 仅列出后台中暂停的程序
  • fg : 将后台程序提到前台(并继续执行)

    • 默认取最近放到后台的一个
    • %[工作编号] 取出指定编号的后台程序
  • bg : 将程序放到后台并继续执行(可用以解除后台的暂停)

  • kill -[标记] %[工作编号] 或者 [PID] : 结束进程

    • -l 列出所有标记
    • -1 终端断线
    • -2 类似键盘输入 ctrl c 结束程序
    • -9 强行终止进程
    • -15 以正常方式终止进程
  • nohup : 在系统的后台执行命令(即用户下线也不停止)

  • ps : 查看进程

    • 常用套路:
    • ps -aux 查看所有进程
    • ps -lA 查看所有系统的数据
    • ps -axjf 以进程树的形式查看
  • top : 动态查看进程

    • -d 后数字,表示多少秒刷新一次

    • -bn 后接数字,表示执行多少次top

    • -p 仅监测某PID

    • 进入top后的命令

      • ? : 显示可以执行的命令
      • P : 以CPU占用排序
      • M : 以内存占用排序
      • N : 以PID排序
      • T : 以执行累计时间排序
      • k : 给予某PID一个信号
      • r : 给某PID制定一个nice值
      • q : 退出
  • pstree : 以树的形式显示进程

    • -A 以ASCII码形式连接
    • -U 以utf8码形式连接
    • -p 显示PID
    • -u 显示用户名

2018年 02月 25日 星期日 19:47:40 CST

2018年 02月 26日 星期一 13:05:22 CST

  • killall : 结束指定名字的进程

    • -i 会有确认提示
    • -e 后面接执行的命令
    • -I 命令名称,忽略大小写
  • nice : 以指定优先级运行程序

    • -n 后接数字,为nice值
  • renice [数字] [PID] : 重新对某进程指定优先级

  • free : 查看内存使用情况

    • -b -k -m -g 指定单位
    • -t 显示物理与swap总量
  • uname : 查看内核相关信息

    • -a 全部
    • -s 系统内核名称
    • -r 系统内核版本
    • -m 本系统的架构
    • -p CPU架构
    • -i 硬件平台
  • uptime : 显示开机多久了

  • netstat : 网络监测

    • -a 列出所有连接、监听、socket
    • -t 列出tcp网络数据
    • -u 列出udp网络数据
    • -n 不列出进程名以端口号显示
    • -l 列出正在监听网络的服务
    • -p 列出网络进程的PID
  • dmesg : 分析内核产生的信息

  • vmstat : 检测系统资源变化

  • fuser : 找出文件正在被哪个进程用

    • -u 除了PID外还显示进程的所有者
    • -m 显示所有用到此文件的进程(针对mount效果极佳)
    • -v 列出详细信息
    • -ki 尝试终止使用者
    • -? ?为信号数字
  • lsof : 列出被进程打开的文件

    • -U 仅列出Unix like的socket文件
    • -u 后接用户名,仅列出指定用户打开的
    • +d 后接目录,仅列出此目录中的
  • pidof : 找出进程名的PID

    • -s 找到多个时仅显示一个
    • -x 连PPID也显示

SELinux

  • getenforece : 查看SELinux开启状态

  • sestatus : 查看SELinux策略

  • setenforce : 切换状态

    • 0 permissive 宽容模式
    • 1 enforcing 强制模式

2018年 02月 26日 星期一 13:05:22 CST

  • chcon : 设置安全上下文

    • -R 递归子目录
    • -t 后接安全上下文类型字段,如 httpd_sys_content_t
    • -u 后接身份标识,如 stsyem_u
    • -r 后接角色,如 system_r
    • --reference=范例文件 以某个文件为范例进行设置
  • restorecon : 还原默认的安全上下文

    • -R 递归子目录
    • -v 显示过程
  • seinfo : 策略查询

    • -A 列出所有信息
    • -t 列出所有类型
    • -r 列出所有角色
    • -u 列出所有身份标识
    • -b 列出所有规则的种类
  • sesearch : 查找详细策略

服务

服务启动脚本存放位置:/etc/init.d/

初始化环境配置文件位置:/etc/sysconfig/

super daemon的配置文件位置:/etc/xinetd.d/

各服务各自的配置文件位置:/etc/

各服务产生的数据库位置:/var/lib/

各服务PID记录的位置:/var/run/

查看所有服务(stand alone)状态:service --status-all

super deamon : 略

服务管理

  1. centOS chkconfig
  2. Ubuntu sysv-rc-conf

ubuntu禁止服务开机启动: update-rc.d -f apache2 remove

日志文件

日志文件记录的内容对应:

/var/log/dmesg 硬件监测信息

/var/log/lastlog 账户登录信息

/var/log/messages 系统错误信息

/var/log/secure 账户密码安全信息

/var/log/wtmp, var/log/faillog 账户登录信息

/var/log/httpd/* www服务信息

硬件监测

  • fdisk : 查看分区

  • hdparm : 查看硬盘信息与测试读写速度

  • dmesg : 查看内核运行过程中的各种信息

  • vmstat : 分析系统目前状态

  • lspci : 查看PCI接口

  • lsusb : 查看USB接口

  • iostat : 与vmstat类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值