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
追加
-
! : 执行命令历史中的命令
数字
执行第几条!
执行上一条字符串
执行以此字符串开头的最近一次命令
命令执行的优先级
- 以相对或绝对路径执行的命令
- 由alias找到的命令
- bash内置的命令
- 通过$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中默认
sh
是dash
的连接文件,并不是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做以下几件事:
- 在passwd中创建一行与账号相关的数据
- 在shadow中将此账号信息填入,但是没有密码
- 在group中加入一个与账号相同的组名
- 在
/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.allow
或at.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 : 略
服务管理
- centOS
chkconfig
- 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类似