终端
tty控制台终端
tty1-tty6
tty1既是图形界面(默认)
图形界面切换到字符界面终端:ctrl + shift + alt + F2~F6
字符界面切花到图形界面终端:alt + F1
pts虚拟终端
ctrl + alt + t 打开新终端
查看系统和BIOS硬件时间:指的是bios时间
Linux如何获得帮助?
方法1:加参数-h 或–help;
方法2:man 加命令;
关机命令:
shutdown、initial、reboot
shutdown 作用:关机、重启、定时关机
语法:#shutdown [选项]
选项:
-r:重新启动计算机
-h:关机
-h 时间:定时关机
-c:取消之前的定时关机
1 | shutdown -h now #马上关机 |
init 作用:切换运行级别
语法:init 0~6
1 | init 0 #命令用于立即将系统运行级别切换为0,即关机; |
runlevel 作用:查看当前运行级别
语法:#runlevel
!$;表示上一个命令的最后一个参数;
同一目录下文件和文件名不一样。
字符操作:
i 当前插入
I 行首插入
a 当前字符之后插入
A 行尾插入
o 下一行插入
O 上一行插入
x 向后删除一个字符
X 向前删除一个字符
u 撤销一步
词操作
dw 删除一个词,删除时要将光标移动到这个词的行首。另外,如果光标不在行首,则删除光标之后的字母。
yw 复制一个词
快操作
大D或d + $ 删至行尾 d+^删至行首
y + $ 复制至尾 y + ^ 复制至首
v模式
进入v模式,移动光标选择区域
编程时需要进行多行注释:
- 注释:CTRL + v进入列编辑模式
- 向下或向上移动光标
- 把需要注释的行的开头标记起来
- 然后按大写的I
- 再插入注释符,比如’#’
- 再按Esc,就会全部注释了
linux文件系统由三部分组成:文件名,inode,block(真正存数据)
indoe:文件数据都储存在’块中‘,那么很显然,我们还必须找一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域叫做inode,中文名译为”索引节点“。
inode的内容
inode包含文件的元信息
文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读、写、执行权限
文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上依次打开的时间。
链接数,即有多少文件名指向这个inode
文件数据block的位置
使用stat命令查看文件inode信息
inode的大小
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。
每个文件最少有一个inode号。操作系统号码来识别不同文件。
使用ls -i
命令,可以看到文件名对应的inode号码:
Linux中ctime,mtime,atime的区别
ctime:”改变时间(change time)“
mtime:”修改时间(modification time)“
改变和修改之间的区别在于是改文件的属性还是更改它的内容。chmod a-w myfile,那么这是一个改变;
echo foo >> myfile,那么这是一个修改。
改变是文件的索引节点发生来改变;修改是文本本身的内容发生了变化。
atime:”访问时间(access time)“
访问时间是文件最后一次被读取时间。因此阅读一个文件会更新它的访问时间。但是它的修改时间和改变时间没有变。
1 | ls -lc filename #列出文件的ctime |
ext4文件系统比ext3文件系统强的方面:
- ext4与ext3兼容
- 更大的文件系统和更大的文件。交织Ext3目前所支持的最大16TB文件系统和最大2
TB文件,Ext4分别支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB的文件。
- 无限数量的子目录。Ext3目前只支持32,000个子目录,而Ext4支持无限数量的子目录。
- ”无日志“(No Journaling)模式。日志总归有一些开销,Ext4允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。
LUKS(Linux UNified Key Setup)为Linux硬盘加密提供了一种标准
cryptsetup是linux下的一个分区加密工具,是在经过加密的块设备上再创建文件系统,然后再进行挂在使用,可以达到最底层的加密。
首先对硬盘进行分区:
fdisk /dev/sdb
fdisk #分出一个sdb1
fdisk -l
下面开始对分区进行加密
#cryptsetup luksFormat/dev/sdb1
设置为加密分区
出现要输入yes的地方一定要输入YES
映射
cryptsetup luksOpen /dev/sdb1 disk1
#将分区映射成disk1,则这个设置就在/dev/mapper中
mkfs.ext4 /dev/mapper/disk1
格式化加密分区
mount /dev/mapper/disk1/mnt/luks
挂载加密分区
df查看分区挂载情况
umount /dev/mapper/disk1
卸载分区
cryptsetup luksClose/dev/mapper/disk1
关闭加密分区
生成加密分区的密码文件,实现开机自动挂载加密分区
vi /etc/crpttab
写入:
disk1 /dev/sdb1 /root/key
如果这里写none的话,当系统启动时在读取分区时候,会一直停在那,等待输入密码
echo -n "123" > /root/key
生成密码文件
chmod 700 /root/key
修改权限
cryptsetup luksAddKey/dev/sdb1/root/key
添加口令到/dev/sdb1中
cat /etc/crypttab
disk1 /dev/sdb1 /root/key
vi /etc/fstab自动挂载文件
/dev/mapper/disk1 /mnt/luks ext4 defaults 0 0
mount -a 重新挂载/etc/fstab里的内容,如果报错的话就需要重启系统
转码
iconv -f gb2312 1.txt -o 2.txt
解决将公司服务器上脚本导到windows上打开串行问题
这是因为windows和Linux处理回车不同。
unix2dos 文件名
用户分类:
根据账号的位置:本地帐号、远程(域)账号。
根据账号功能:
超级用户(root) UID :0
普通用户
系统用户 UID:1-499
本地用户 UID:500+
组分类:
根据账号的位置:本地组、远程(域)组。
根据账号功能:
超级用户组(root) UID :0
普通用户组
系统用户组 UID:1-499
本地用户组 UID:500+
关于系统用户和组的相关配置文件:
账号信息 密码信息
用户: /etc/passwd /etc/shadow
组: /etc/group /etc/gshadow
passwd中的伪用户:
/etc/passwd文件中常见的伪用户
伪用户 | 含义 |
---|---|
bin | 拥有可执行的用户命令文件 |
sys | 拥有系统文件 |
adm | 拥有账户文件 |
uucp | UUCP使用 |
Ip | Ip或Ipd子系统使用 |
nobody | NFS使用 |
源码安装nginx,运行nginx web服务默认使用nobody用户
用户名:密码:最近更改密码的日期(从19700101开始计算):密码不能更改的天数(最近被改过之后几天后才可以再次更改。0表示随时可以修改):密码过期时间(多少天后必须再次修改):密码需要更改期限到来前7发出警告:宽限天数(密码过了几天后还能改密码):账号过期时间:保留
为多个用户输入初始密码
#echo 密码 | passwd --stdin 用户名
# –stdin非交互添加密码
Linux用户密码加密
控制添加用户规则的文件
HOME=/home #哪个目录作为用户主目录存放目录。如果你不想让用户家目录在/home下,可以修改这个地方。
SHELL=/bin/bash #默认shell使用哪个
SKEL=/etc/skel #模板目录
查看用户信息相关命令:
id 用户名
whoami
w
who
用户切换
#su [-] username
加-用户和shell环境一起切换。
进入单用户找回root身份
编辑/etc/passwd,vim /etc/passwd
将root:x:变成root::
文件基本权限(不适用于root)
对于文件:
r读 w写 x执行
对于目录:
r读(看到目录里面有什么)
w建文件、删除、移动
x进入
修改权限命令
chmod
作用:修改文件权限
u + r
g - w
o = x
a + x a表示所有(u、g、o)
修改文件夹权限
使用数字表示权限
rwx
r– | -w- | –x |
---|---|---|
100 | 010 | 001 |
r=4 | w=2 | x=1 |
rw-的值是6 ,rwx r-x r-x的值是755
chmod a=rwx a.txt
等于 chmod 777 a.txt
chown
作用:修改文件拥有者和所属组
语法:
1 | chown USER:GROUP 对象 |
-R 递归(目录下的所有内容全部更改,否则只修改目录)
设置文件默认权限的补码:
系统用户:#umask 022
普通用户:#umask 002
计算方法:
文件默认权限=666 - umask值 666-022=644
目录默认权限=777 - umask值
注意:这是一个好的记忆方法,但不严谨。
umask掩码为033. 666 - 033=633 结果为:644
110110110(666)与111100100(033的反码)相与得到110100100(644)
特殊权限
SUID SGID Stickybit
s对应的数值为:4 s,2 t,1
SUID:
限定:只能设置在二进制可执行程序上面。对目录文本设置无效。
功能:程序运行时的权限从执行者变更成程序的所有者。
SGID:
限定:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了SGID权限的目录下建立文件是,新创建的文件的所属组会继承上级目录的所属组。
Stickybit:
限定:只作用于目录
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除。
一个让root都无法删除的文件
chattr lsattr
+a 只能追加内容
+i 不能被修改
tar命令
作用:打包、压缩文件
#c create 创建
#v 详细
#f filename
file命令
作用:查看文件类型
用法:file 文件路劲
注意:Linux系统不根据后缀名识别文件类型
不解包,查看tar中的内容:
tar -tvf a.tar
解包:
tar -xvf a.tar
指定解压路径:
tar -xf a.tar -C /home
tar归档+压缩
格式(后缀名):.tar.gz 或 .tgz
语法:tar cvzf newfile.tar.gz SOUPCE
tar -zxf a.tar -C /home
bz2 归档+压缩
tar -cjvf a.tar.bz2 /root
解压:tar jxf a.tar.bz2 -C /root/a
zip软件包解压缩命令
zip是压缩程序,unzip是解压程序。
压缩文件:
zip a.zip /etc/passwd
压缩目录:
zip -r a.zip /root
解压缩:
unzip a.zip
unzip a.zip -d /home
进程管理
查看进程树:
pstree树型结构显示系统进程信息
-p显示进程号
ps命令
USER:运行此进程的用户名
PID:该process的号码
%CPU:该进程使用掉的CPU资源百分比
%MEM:该进程所占用的物理内存百分比
VSZ:该进程使用掉的虚拟内存量(kbytes)
RSS:该进程占用的固定的内存量(kbytes)
TTY:该进程是在哪个终端上面运作,若与终端机无关,则显示?,另外,tty1~tty6市本级上面的登入者程序,若为pts/0等等的,则表示为由网络连接进主机的程序。
STAT:该进程目前的状态,Linux进程有5种基本状态:
R:(正在运行或在运行队列中等待);
S:该程序目前正在睡眠中,但是可被某些讯号(signal)唤醒。
T:该程序目前暂停了;
Z:该程序应该已经终止,但是其父程序却无法正常的终止它,造成zombie(僵尸)程序的状态;
D:不可中断状态;
ctrl + c是发送SIGINT信号,终止一个进程
ctrl + z是发送SIGSTOP信号,挂起一个进程。
< | 高优先级的 |
---|---|
N | 低优先级的 |
L | 有内存分页但是带锁 |
s | 包含子进程 |
I | 多线程 |
+ | 前台程序() |
START:该进程被触发启动的时间
TIME:该进程实际使用CPU运作的时间
COMMAND:该进程的实际指令
ps -aux是用BSD的格式来显示进程
ps -ef是用标准的格式显示进程
top命令
作用:动态查看进程
统计信息区前五行是系统整体的统计信息
1.第一行是任务队列信息,同uptime
命令的执行结果相同
14:35:50 | 当前时间 |
---|---|
up 3:25 | 系统运行时间,格式为时:分 |
2 users | 当前登录用户数 |
load average: 0.08, 0.03, 0.05 | 系统负载,即任务队列的平均长度。三个值分别为1分钟、5分钟、15分钟前到现在的平均值。 |
2.第二、三行为进程和CPU的信息
Tasks: 198 total | 进程总数 |
---|---|
1 running | 正在运行的进程数 |
197 sleeping | 睡眠进程数 |
0 stopped | 停止进程数 |
0 zombie | 僵尸进程数 |
%Cpu(s): 1.3 us | 系统用户进程使用CPU百分比 |
0.3 sy | 内核空间占用CPU百分比 |
0.0 ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
98.3 id | 空闲CPU百分比 |
3.第四、五行为内存信息
KiB Mem : 997956 total | 物理内存总量 |
---|---|
62328 free | 空闲内存总量 |
739828 used | 使用的物理内存总量 |
195800 buff/cache | 用作内核缓存的内存量和free -k一个意思 |
KiB Swap: 2097148 total | 交换区总量 |
1914364 free | 空闲交换区总量 |
182784 used | 使用的交换区总量 |
57860 avail Mem | 缓冲的交换区总量 |
进程信息
PID | 进程id |
---|---|
USER | 进程所有者的用户名 |
NI | 进程优先级,nice值。负值表示高优先级,正值表示低优先级 |
RES | 实际使用内存大小 |
top快捷键:
默认3s刷新一次
空格:立即刷新
q退出
M按内存排序
P按CPU排序
kill命令
kill -9 pid
killall或plill 通过程序的名字,直接杀死所有进程
文件查找方法
which:查看可执行文件的位置
whereis:查看可执行文件的位置及相关文件
locate:配合数据库缓存,快速查看文件位置
find:实际搜寻硬盘查询文件名称
grep:过滤
find搜索文件系统、实时搜索
find [目录] [条件] [动作]
不输入代表当前目录
类型:-type(f 文件,d 目录,I 链接,p 管道,c 字符文件,b 快文件,s socket文件)
名字:-name
大小:-size +NM大于兆 -NG小NGB
时间: -mtime -atime -ctime
查看命令
cat -s多个空行合并成一个空行显示
cat -b加行号显示
nl 加行号
cp 源文件路径 目的路径 -i
覆盖时交互提示:
touch创建一个已经存在的文件时,只更新时间戳