Linux笔记汇总
把以前的几篇零散的笔记合并到这里了(本来就写的很乱,合并之后更乱了)
这些笔记只是我自己的备忘录,可读性很差,建议不要看了
关机和重启
sync
运行 sync 命令将执行用户的所有还未写入硬盘中的数据写入硬盘
如果要 sync 整个系统的数据需要以 root 权限运行
现在的 shutdown 等命令会自动调用 sync
shutdown
用法:shutdown [-krhc] [时间] [自定义消息]
参数:
-k
只发出信息,不进行关机操作-r
重启-h
(halt)就是一般的关机-c
取消正在倒计时的 shutdown
时间的单位默认是分钟
其它命令
- halt
- poweroff
查看日期
date
命令能看日期,date +%Y/%m/%d格式化输出日期
cal
看日历📅
文件压缩
tar
压缩格式对应参数
-z
gzip-j
bzip2-J
xz
创建压缩文件用参数-c
,解压用-x
-f
后接文件或目录,压缩时-C
后接被压缩目录
-p
保留权限和属性信息,常用于备份-P
保留绝对路径(允许根目录存在)--exclude
排除文件或目录
cpio
cpio -ovcB > 文件或设备
备份cpio -ivcdu < 文件或设备
还原- 'cpio -ivct < 文件或设备`查看
使用管道给cpio提供数据
没实操过,有机会再用
gzip,bzip2,xz
单独使用的机会不多,不写了
查找命令帮助信息
查找命令帮助信息的三种方法
--help
参数man
查阅手册info
Linux上特有的方式
–help 参数
没啥好说的,忘记参数时看一下,也有基本的用法信息
man page
man 界面内的操作
- 空格或者PgUp/PgDn翻页
- Home键去首页,End键去尾页
/[string]
向下查找字符串string,?string
向上查找- n 下一个结果,N 上一个结果(方向相对于查找命令用的方向)
- q 退出
查看命令手册:man [分类编号] 命令
man page分类编号的意义
1
一般命令和可执行程序5
配置文件等的文件格式8
系统管理命令(如/sbin
目录下的那些程序)
常用的就上面三个,完整的去看man man
列出某个命令所有分类下的man page:man -f 命令
这个只对名称进行精确查找,不会匹配简介内容
whatis
等效于man -f
,需要建立whatis数据库(root运行mandb来建立数据库)
用关键字搜索man page:man -k 命令
会匹配名称和简介内容,忘记命令全名时挺有用
等效于apropos
info
info 界面内操作
N
(Next)下一个节点P
(Prev)之前一个节点U
(Up)上一层Tab
节点间切换
info比较少用,文档可读性比man page好点,不过覆盖没有那么全
locale的设置
locale
列出当前的locale设置
LANG=
是输出内容的语系,把这个设置成en_US.utf8终端就不会乱码
LC_xxx
是数据的储存格式
bash 的使用
几个文件位置
/etc/shells
包含了系统中所有可用的shell~/.bash_history
上一次登录以来的1000条命令历史(这次登录的还未写入文件)/etc/profile
影响系统中所有bash的全局设置,只有login shell才会读~/.bash_profile
用户的设置,同样只有login shell才会读~/.bashrc
用户登录时运行的配置~/.bash_logout
退出shell时执行的操作
shell欢迎信息
欢迎信息包含在/etc/issue
和/etc/motd
issue比motd先显示
/etc/issue内反斜线转义符号的含义
man一下agetty然后搜索escape
查询是否为bash内置命令
type 命令或文件
可以告诉你一个东西是shell内置命令还是外部程序,它还有几个参数可以获得更详细的信息
快捷键
\
可以转义Enter键,让命令接着下一行输入^u/^k
删除光标向前/向后的字符串^a/^e
将光标移到最前面/末尾位置
查看变量
env
列出所有环境变量set
列出所有环境变量和自定义变量echo $变量
单独输出某个变量
设置变量
变量名=变量
直接设置自定义变量export 变量名
将变量转为环境变量export 变量名=变量
直接设定为环境变量declare
与export相反
别名
alias与unalias
命令执行判断依据
;
前一个命令执行完,马上执行下一个命令&&
前一个命令执行成功才执行下一个命令||
前一个命令执行失败才执行下一个命令
磁盘管理
df
显示文件系统用量
df -h
以gb,kb为单位df -i
以inode数量表示
du
显示磁盘用量
du -s
只显示总量du -h
以gb,kb为单位
查看存储设备信息
lsblk
(list block device)列出存储设备blkid
列出文件系统的uuidparted /dev/sda print
列出磁盘分区信息
分区工具
gdisk
GPT分区表用fdisk
MBR分区表用cfdisk
交互界面的分区工具
格式化
mkfs.ext4 [-b blocksize] [-L lable] /dev/sdaX
-b指定区块大小,-L指定名称
mount
不带参数执行会列出所有已挂载的信息,加上-l
可以显示Lable名称
mount -t
指定文件系统种类(用于没有超级块的文件系统如FAT)mount -a
挂载/etc/fstab中的所有文件系统(设置了noauto参数的除外)mount -o
后接挂载参数,指定为loop可以挂载iso镜像
利用mkfs. -f可以格式化文件为iso`mount --bind
将某个目录挂载到其它目录
mount太复杂了,别的参数以后用到再学
umount
-f
强制-l
立即(比-f还牛逼)-n
卸载但不更新/etc/mtab
swap
用交换分区
- 准备一个分区
mkswap
swapon
free
查看使用情况
用交换文件
dd if=/dev/zero of=[swap文件] bs=1M count=xxx
建立交换文件mkswap
swapon
swapoff
来关闭
如果用交换文件,写进fstab时不能用 uuid废话
用户和用户组管理
几个文件
/etc/passwd
记录用户信息/etc/group
记录用户组信息/etc/shadow
记录用户密码/etc/gshadow
记录用户组密码
查看当前用户的信息
id
命令查看UID和GID
finger
用户的基本信息
chfg
修改用户全名,电话等信息
chsh -s
修改shell
有效用户组
groups
会列出所有加入的用户组,第一个为有效用户组
newgrp <用户组>
切换有效用户组,会进入一个新的shell环境
帐号管理
useradd [-u uid] [-g 初始用户组] [-mM] 用户名
添加用户
-m
表示建立home目录,-M
表示不建立Home目录9系统帐号默认)
useradd -D
输出不带参数时的默认设置usermod
用来调整用户
具体参数见–helpuseradd
删除用户,加上-r
连着用户的home目录一起删除
用户组管理
groupadd [-g gid] [-r] 用户组名称
添加用户组,带上-r时表明添加系统用户组grouddel
删除用户组groudmod
微调参数gpasswd
不带参数时修改用户组密码gpasswd -A 用户 用户组
将用户设置为用户组管理员
切换用户
su
用来切换用户
su -
同时读取login-shell的配置
su -p
不读取用户的环境配置(使用当前的环境配置)
su
只读取non-login的shell配置
查询用户
列出系统上已登录的用户:
w
who
这两个命令的输出不一样,包含的信息基本相同
文件和目录管理
特殊目录
-
上一个工作目录~user
用户user的home目录
文件管理命令的一些常用的参数
pwd -P
显示真实路径而非链接路径ls -S
按文件大小排序ls -t
按最后修改时间排序ls --full-time
显示完整的时间mkdir -p
允许建立多级目录mkdir -m 755
设定创建的目录的权限cp -i
目标文件存在时询问是否覆盖cp -p
复制源文件的权限信息cp -a
复制源文件的所有特性(如最后修改时间)cp -u
(update)源文件比目标文件新时才进行复制rm -i
删除前询问mv -i
移动前询问mv -u
(update)当目标文件已存在且源文件较新时才进行移动
cp 链接
cp -l
创建硬链接(hard link)cp -s
创建软链接(symbolic link)
ln 链接
不带参数为硬链接,带 -s
为软链接
获取文件/目录名
basename
获取文件名dirname
获取目录名(不包括文件名)
常用在shell脚本中
查看文件内容
cat -n
打印出行号tac
反向显示最后一行到第一行less
可自己翻页,和看man page时的操作一样head -n 6 文件
取出前6行(没参数默认10行)tail
取尾巴,和head相对
可以用管道配合head和less来取出任意一段内容od -t type 文件
看非纯文本文件,-t指定输出格式,具体看–help
touch
三个时间
mtime
(modification time)上一次的文件内容变更时间stime
(status time)上一次的文件权限和属性更改的时间atime
(access time)上一次的文件被读取的时间
touch -[acdmt] 文件
a
和m
对应atime和mtime
文件隐藏属性
只有ext文件系统有这个特性
具体参考chattr和lsattr命令
文件查找
which
于PATH中查找可执行文件路径which -a
列出PATH中所有找到的结果find
直接在硬盘上搜索
find太复杂了,而且一般用不到,不展开说了whereis
只查找特定目录,whereis -l
列出会搜索的目录locate
在自己的数据库里查找,用updatedb
更新这个数据库
文件权限
umask
用户在建立文件或目录时的默认权限
输入umask
查看,输入umask -S
查看具体意义
umask数字表示从777减掉的权限
第一个数字是特殊权限,不是指ugo
设置umask:umask命令后面直接接数字
更改所属用户和用户组
chgrp
用法:chgrp [-R] 用户组 文件或目录
-R表示递归,对目录下所有文件和目录都进行更改
chown
用法:
chown [-R] 用户 文件或目录
chown [-R] [用户]:[用户组] 文件或目录
第二钟用法可以同时更改用户和用户组,还可以留空用户名来达到更改用户组的目的
比如chown :wheel file1
只更改用户组
其实:
换成.
也行,但最好不要这样用
chmod
文件权限掩码
r:4
w:2
x:1
还可以用符号:
chmod [-R] [u,g,o,a][+,-,=][r,w,x] 文件或目录
符号的意义:
u
(user)g
(group)o
(others)a
(all)+,-
(加上,减去)=
(设定为)
特殊权限
4
为SUID2
为SGID1
为SBIT
SUID
- 只对二进制文件有用
- 执行者需要有该文件的x权限
- 执行者将在程序执行过程中获得该程序所有者的权限
举个栗子,passwd程序
SGID
与SUID类似,获得的是所属用户组的权限
SBIT
(Sticky Bit)
- 只对目录有用
- 用户需要对目录有wx权限
- 该目录下创建的文件和目录仅自己和root能删除
举个栗子,/tmp
ACL权限
设置ACL权限
使用setacl
参数:
-m
表示设置后面的权限-x
删除后面的权限b
删除所有的ACL权限
范例:
setacl -m u::rwx file1
为file1的所有者设置acl权限u::rwx
(用户未指明则为所有者)
权限说明:
u:用户:权限
g:用户组名:权限
m:权限
有效权限
d:[u|g]:[用户|用户组名]:[权限]
目录下新建的文件继承的权限
执行用户的权限和有效权限的交集才是实际的权限
查看ACL权限
getacl 文件