linux

终端

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
2
3
shutdown -h now   #马上关机
shutdown -h +10 #10分钟后关机
shutdown -h 20:02 #在20:02时关机

init 作用:切换运行级别

语法:init 0~6

1
2
init 0   #命令用于立即将系统运行级别切换为0,即关机;
init 6 #命令用于将系统运行级别切换为6,即重新启动;

runlevel 作用:查看当前运行级别

语法:#runlevel

!$;表示上一个命令的最后一个参数;

同一目录下文件和文件名不一样。

字符操作:

i 当前插入

I 行首插入

a 当前字符之后插入

A 行尾插入

o 下一行插入

O 上一行插入

x 向后删除一个字符

X 向前删除一个字符

u 撤销一步

词操作

dw 删除一个词,删除时要将光标移动到这个词的行首。另外,如果光标不在行首,则删除光标之后的字母。

yw 复制一个词

快操作

大D或d + $ 删至行尾 d+^删至行首

y + $ 复制至尾 y + ^ 复制至首

v模式

进入v模式,移动光标选择区域

编程时需要进行多行注释:

  1. 注释:CTRL + v进入列编辑模式
  2. 向下或向上移动光标
  3. 把需要注释的行的开头标记起来
  4. 然后按大写的I
  5. 再插入注释符,比如’#’
  6. 再按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
2
3
ls -lc filename            #列出文件的ctime
ls -lu filename #列出文件的atime
ls -l filename #列出文件的mtime

ext4文件系统比ext3文件系统强的方面:

  1. ext4与ext3兼容
  2. 更大的文件系统和更大的文件。交织Ext3目前所支持的最大16TB文件系统和最大2

TB文件,Ext4分别支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB的文件。

  1. 无限数量的子目录。Ext3目前只支持32,000个子目录,而Ext4支持无限数量的子目录。
  2. ”无日志“(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
2
3
chown USER:GROUP 对象
chown USER 对象
chown :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创建一个已经存在的文件时,只更新时间戳

0%