鸟哥的linux私房菜

第6章 Linux文件与目录


数据截取

持续监测文件中的内容是否变化:tail -f /var/log/message

修改文件时间


ls -l --time=ctime #创建时间
ls -l --time=atime #读取过内容
ls -l --time=ctime #更改过状态

touch -t 202112120000 test #更改创建时间及读取过时间,更改过时间不能更改

umask:文件默认权限

umask 
umask -S    #以符号的方式来显示
umask 002   #修改默认权限

文件隐藏属性:

chattr:配置文件隐藏属性

chattr [+-=] 文件或目录名称

a:只能增加数据,不能删除也不能改写

i:不能删除,改名,无法写入无法新增数据

chattr +i test    
charrt -i test

lsattr:显示文件隐藏属性

lsattr test
----i--------------- test

file:观察文件类型

命令与文件查找

which:脚本文件查找(查找【执行文件】)

which yum
/usr/bin/yum

whereis:文件查找,只找几个特定目录(/bin/sbin,/usr/share/man下面的man page)

whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

whereis -l //查看查找哪些目录

locate/updatedb:文件查找,locate寻找的数据是由已建立的数据库 /var/lib/mlocate/里面的数据查找到的,但是使用有限制,数据库的建立默认每天执行一次,所以新建立的文件会提示找不到,这时需要更新数据库:updatedb

locate temp.txt 
/root/temp.txt

find:{}代表find查找到的内容,会被放置到{}位置中,-exec一直到 \;,是关键词,代表find额外操作的开始(-exec)到结束(\;),在这中间的就是find命令的额外操作。因为;在bash中有特殊作用,所以用  \表示转义

find / -name "temp.txt" -exec ls -l {} \;
-rw-r--r--. 1 root root 28 8月   6 10:14 /root/temp.txt

第7章、Linux磁盘与文件系统管理

查询linux系统支持哪些文件格式

ls -l /lib/modules/$(uname -r)/kernel/fs

总用量 20
-rw-r--r--. 1 root root 7784 7月  20 13:38 binfmt_misc.ko.xz
drwxr-xr-x. 2 root root   30 7月  23 22:52 cachefiles
drwxr-xr-x. 2 root root   24 7月  23 22:52 ceph
drwxr-xr-x. 2 root root   24 7月  23 22:52 cifs

查询已加载到内存中的文件系统

cat /proc/filesystems

nodev    sysfs
nodev    tmpfs
nodev    bdev
nodev    proc

磁盘分区、格式化、检验与挂载

观察磁盘分区状态:lsblk

lsblk

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   30G  0 disk
├─sda1        8:1    0  2.4G  0 part /boot
└─sda2        8:2    0 27.6G  0 part
  ├─cl-root 253:0    0 25.6G  0 lvm  /
  └─cl-swap 253:1    0    2G  0 lvm  [SWAP]
sr0          11:0    1 1024M  0 rom

UUID:全局唯一标识符

blkid

/dev/sda1: UUID="4f15f6a6-7bcf-4ff2-ad62-59b61a9b0108" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="10da9192-01"
/dev/sda2: UUID="804O30-HMQ0-QYbO-XlUC-swI1-uNBk-9HGIdq" TYPE="LVM2_member" PARTUUID="10da9192-02"
/dev/mapper/cl-root: UUID="6ec566e6-c979-40a6-80c9-f968ad642c53" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/cl-swap: UUID="a5335510-3f68-493d-ad56-9b7253e906cf" TYPE="swap"

磁盘分区:gdisk/fdisk,MBR分区表使用fdisk,GPT分区表使用gdisk,除了last其他都可回车。

gdisk /dev/sda
Command (? for help): n
Partition number (3-128, default 3): 3
First sector (34-2047, default = 34) or {+-}size{KMGTP}: 2047
Last sector (2047-2047, default = 2047) or {+-}size{KMGTP}: 2047
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

按w保存之后需要重启,或者使用partprobe保存

partprobe -s //s:打印信息

格式化磁盘

文件系统格式化:mkfs.xfs /dev/sda2

找出cpu核心数:grep 'processor' /proc/cpuinfo

文件系统挂载与卸载

将目录挂载到其他目录:mount --bind /var /data/var

磁盘文件系统参数自定义

8为主要设备代码(major),0为次要设备代码(minor)

ll /dev/sda*
brw-rw----. 1 root disk 8, 0 8月  12 08:58 /dev/sda
brw-rw----. 1 root disk 8, 1 8月  12 08:58 /dev/sda1
brw-rw----. 1 root disk 8, 2 8月  12 08:58 /dev/sda2

设置开机启动挂载

启动挂载:更改/etc/fstab及/etc/mtab,

特殊设备loop挂载(镜像文件不刻录就挂载使用)

mount -o loop ***.iso /tmp

建立大型文件(可用来建立空文件):dd if=/dev/zero of=/srv/loopdev bs=1M count=512

if:输入文件,/dev/zero是会一直输出0的设备

of:输出文件,将一堆0写入到后面的那个文件中

bs:每个block块的大小

count:总共几个bs

挂载iso文件

mount ***.iso /tmp

使用文件创建内存交换文件

1、新增文件

dd if=/dev/zero of=/tmp/swap bs=1M count=128    

2、使用mkswap将/tmp/swap这个文件格式化为内存交换文件格式 

mkswap /tmp/swap     

3、使用swapon将/tmp/swap启动 

swapon /tmp/swap    
swapon -s

 4、使用swapoff关闭swapfile,并设置自动启动 

swapoff /tmp/swap    
vim /etc/fstab 
swapon -a
swapon -s

第8章、文件与文件系统的压缩

建立镜像文件:mkisofs

mkisofs -r -v -o /tmp/system.img -m /root/etc -graft-points /root/=/root/ /home/=/home/ /etc/=/etc/

将image文件刻录到U盘

dd if=/tmp/system.iso of=/dev/sda

第9章 vim程序编辑器

DOS与linux换行符

DOS换行多了一个^M,所以需要转换

unix2dos -k man_db.conf 
unix2dos: 正在转换文件 man_db.conf 为DOS格式...

dos2unix -k -n man_db.conf
dos2unix: 正在转换文件 man_db.conf 为Unix格式...

//将文件转成linux换行符,并保留旧文件
dos2unix -k -n man_db.conf man_db.conf.linux
dos2unix: 正在转换文件 man_db.conf 为Unix格式到 man_db.conf.linux...

语系编码转换

iconv -f big5 -t utf8 test -o test_1

第10章、BASH

Bash shell功能

  • 命令别名设置功能
alias lm='ls -al'

查询命令是否为Bash shell内置命令:type

[root@localhost ~]# type ls
ls 是 `ls --color=auto' 的别名
[root@localhost ~]# type -t ls
alias
[root@localhost ~]# type -a ls
ls 是 `ls --color=auto' 的别名
ls 是 /usr/bin/ls

shell变量

  • 变量的使用前面要加$:echo
echo ${PATH}    //或者echo $PATH
  • 设置或者修改变量的内容
name=liu
echo ${name}
  • 需要借助其他额外的命令提供所需要的信息,可使用单反引号【``】或【$(命令)】
version=(uname -r)
version=`uname -r`

取消变量

unset name

用法

work="/home/kernel/YL"
cd $home

环境变量的功能

  • 观察环境变量:env
  • 本shell的进程号:$
  • 上个命令执行的返回值:?
    • 成功返回0
    • 失败返回错误代码
  • 主机硬件与内核等级:OSTYPE,HOSTTYPE,MACHTYPE
  • 要让变量内容在子进程中使用:export

临时将语系转换成英文

LANG=zh_CN.UTF-8
export LC_ALL=en_US.utf-8

第16章 进程管理与SELinux初探

将进程置于后台执行:&

cp test test &

任务管理:job control

数据流重定向进行管理

tar -cvf /xxx.tar.gz /etc > /tmp.log 2>&1 &

将任务丢到后台中:ctrl + z

查看目前后台任务状态:jobs

[z@localhost ~]$ jobs 
[1]+  已停止               vim /etc/passwd
[z@localhost ~]$ jobs -l
[1]+  8015 停止                  vim /etc/passwd

将任务拿到前台处理:fg

[z@localhost ~]$ fg 1
vim /etc/passwd

[1]+  已停止               vim /etc/passwd

让任务在后台下的状态变成运行中:bg

[z@localhost ~]$ bg 1
[1]+ vim /etc/passwd &

[1]+  已停止               vim /etc/passwd

管理后台当中的任务:kill 

  • kill -15:正常状态退出
  • kill -9:强制删除一个不正常的任务

进程管理

top:动态查看程序变化

  • -d:进程界面更新的秒数
  • -p:指定某个PID
top -d 2

//使用top持续查看该pid
echo $$
top -d 2 -p 12321

killall:删除某个服务

  • -i:interaction互动,要删除时,会出现提示字符给使用者
  • -I:忽略大小写
killall -i -9 httpd

进程的执行顺序

Priority值与Nice值:进程执行的优先顺序,RPI值越低代表越先执行,PRI是由内核动态调整的,如果要调整进程优先级,只能调整nice值

  • nice的值为 -20 ~ 19

PRI(new)= PRI(old)+ nice

nice:给予新的nice值,主要用于执行不重要的后台时,这时可以把优先级调低,比如备份

  • -n:后面接数值
给nice值一个 -5,用于执行vim
nice -n 5 vim &

renice:已存在进程nice重新调整

renice [number] PID

查看系统资源信息

free:查看内存使用情况

uname:查看系统与内核相关信息

uptime:查看系统与启动时间与任务负载

netstat:追终网络或者socket文件

dmesg:分析内核产生信息

vmastat:检测系统资源变化


特殊文件与进程

具有SUID/SGID权限的命令执行状态

  • SUID仅对二进制程序有效
  • 执行者对该程序需要具有X的可执行权限
  • 仅在执行过程中有效
  • 执行者将具有该程序拥有者的权限

/proc/*代表的意义

每个进程的PID都以目录的形式存在于/proc当中

  • cmdline:这个进程被启动的命令串
  • environ:这个进程的环境变量内容

查询已使用文件或已执行进程使用的文件

fuser:借由文件(或文件系统)找出正在使用该文件的进程

  • -u:除了进程pid之外,同时列出该进程的拥有者
  • -m:后面文件名会主动地上提到该文件系统的最底层,对umount不成功很有效
  • -v:可以列出每个文件与进程还有命令的完整相关性
  • -k:找出使用的pid,试图以SIGKILL这个信号给予该PID
  • -i:需与-k配合,删除前提示
fuser -muv /home
fuser -mki /home

lsof:列出被进程所使用的文件名称

  • -a:多项需要同时成立显示出结果
  • -u:该用户相关进程所使用文件
  • +d:后面接目录,找出某个目录下面已经被使用的文件
列出关于root的所有进程所使用的socket文件
lsof -u root -a -U

pidof:找出某个正在执行的进程的pid

pidof systemd rsyslogd

19、启动流程、模块管理与loader

19.3.6、启动前的额外功能修改

  • 进入救援模式:
    • 启动界面按 e 进入编辑模式,
    • 在linux那一行后面加入:systemd.unit=rescue.target

grub2 额外的指令编辑模式

  •         按ctrl + x进入系统

19.4 、开机过程的问题总结

19.4.1、忘记密码

1、启动界面按e进入编辑模式

2、linux项目最后加上:rd.break

3、按ctrl + x 开始开机,此时是RAM Disk环境,需要挂载/sysroot

4、查看/sysroot挂载,将它挂载成可读写:mount -o remount rw /sysroot

5、切换根目录:chroot /sysroot

6、更改密码:passwd root

7、变回SElinux安全上下文:touch /.autorelabel

8、exit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值