Loading

Linux 学习笔记

Linux 学习笔记

作者:Grey

原文地址:

博客园:Linux 学习笔记

CSDN:Linux 学习笔记

说明

本文如果没有特别说明,环境是 CentOS 7, 主要是日常学到的一些笔记,所以内容相对零散。

如何建立环境

登录Shell会话读取的启动文件

文件 内容
/etc/profile 应用于所有用户的全局配置脚本
~/.bash_profile 用户的个人启动文件。可用于扩展或者覆盖全局配置脚本中的设置
~/.bash_login 如果没有找到~/.bash_profile,Bash会尝试读取该脚本
~/.profile 如果/.bash_profile和/.bash_login都没有找到,Bash会尝试读取该脚本,这是基于Debian发行版(如Ubuntu)的默认文件

非登录Shell会话读取的启动文件

文件 内容
/etc/bash.bashrc 应用于所有用户的全局配置脚本
~/.bashrc 用户的个人启动文件,可用于扩展或者覆盖全局配置中的设置

随机生成数据

shuf train.txt -o test.txt -n 30

train.txt文件中随机读取30行文本输出到test.txt

挂载/卸载

/boot目录的加载和卸载
在/下:

umount /dev/sda1
mount /dev/sda1 /boot

更多可查看Linux 下模拟制作块设备并挂载

文件描述符操作实验

第一步,创建一个文件,并写入一些内容。

vi abc.txt

写入一些内容

dfasdfasdfasdfa1
asdfasdfasd2
sadfasdfasd3

abc.txt读入4号文件描述符

exec 4< abc.txt

查看当前进程所有文件描述符

ll /proc/$$/fd
[root@linux data]# ll /proc/$$/fd
total 0
lrwx------. 1 root root 64 Sep 14 02:44 0 -> /dev/pts/0
lrwx------. 1 root root 64 Sep 14 02:44 1 -> /dev/pts/0
lrwx------. 1 root root 64 Sep 14 02:44 2 -> /dev/pts/0
lrwx------. 1 root root 64 Sep 14 02:46 255 -> /dev/pts/0
lr-x------. 1 root root 64 Sep 14 02:46 4 -> /data/abc.txt

查看当前进程打开的文件

lsof -p $$
[root@linux data]# lsof -p $$
COMMAND  PID USER   FD   TYPE DEVICE  SIZE/OFF     NODE NAME
....
bash    1252 root    4r   REG  253,0        84 34172896 /data/abc.txt
....

abc.txt第一行读出来

[root@linux data]# read a 0<& 4
[root@linux data]# echo $a
sdfasdfasdfasdfasdfasdfasdfasd

文件偏移量实验

每个进程的偏移量互不影响,每个fd会单独维护一个seek(指针)
查看文件偏移量

lsof -op $$

可以看到,一开始偏移量(OFFSET字段):0t31

[root@linux data]# lsof -op $$
COMMAND  PID USER   FD   TYPE DEVICE OFFSET     NODE NAME
....
bash    1252 root    4r   REG  253,0   0t31 34172896 /data/abc.txt
....

重新打开一个,并再次查看文件偏移量,0t0。

exec 4< /data/abc.txt
[root@linux data]# lsof -op $$
COMMAND  PID USER   FD   TYPE DEVICE OFFSET     NODE NAME
....
bash    1252 root    4r   REG  253,0    0t0 34172896 /data/abc.txt
....

模拟socket实验

模拟和baidu建立tcp连接

cd /proc/$$/fd && exec 8<> /dev/tcp/www.baidu.com/80
[root@linux fd]# ll
total 0
lrwx------. 1 root root 64 Sep 14 05:54 0 -> /dev/pts/0
lrwx------. 1 root root 64 Sep 14 05:54 1 -> /dev/pts/0
lrwx------. 1 root root 64 Sep 14 05:54 2 -> /dev/pts/0
lrwx------. 1 root root 64 Sep 14 05:55 255 -> /dev/pts/0
lrwx------. 1 root root 64 Sep 14 05:58 8 -> socket:[21649]

可以看到建立了一个socket连接

使用lsof查看对应的文件描述符信息

[root@linux fd]# lsof -op $$
COMMAND  PID USER   FD   TYPE DEVICE OFFSET     NODE NAME
....
bash    1275 root    8u  IPv4  21834    0t0      TCP 192.168.118.136:40794->183.232.231.172:http (ESTABLISHED)
....

父子进程

当前进程的id

echo $$

父进程PID是1275

再启动一个bash

/bin/bash

再次查看当前进程号

echo $$ 

子进程PID为1820

在子进程中查看父子进程关系, 先安装pstree

yum install psmisc -y 

pstree指令可以查看进程的父子关系

image

也可以通过

ps -ef |grep 1275

查看父子进程的关系

image

父进程中定义的变量和子进程中定义的变量是互相隔离的,如果需要子进程访问父进程的变量,父进程要执行export命令。

管道

示例1:查询abc.txt中的第五行数据

head -5 abc.txt | tail -1

示例2:管道会开辟两个子进程,并且左边输出衔接到右边输入,所以a=9是在子进程中执行的,父进程中a还是等于1

image

$$的优先级比管道高
$BASHPID优先级比管道低

[root@linux /]# { echo $BASHPID; read x; } | { cat; echo $BASHPID; read y;}
1953

1953是子进程ID

[root@linux /]# { echo $$; read x; } | { cat; echo $$; read y;}
1275

1275是父进程ID

变量赋值

a=123
let a=10+2
l=ls
let c=$(ls -l /etc) 
let c=`ls -l /etc`

变量值有空格等特殊字符可以包括在"" 或 ``中

可以通过echo ${变量名}查看变量的值

变量的导出使用export命令,让子进程获得父进程的变量值

变量的删除使用unset命令

stat和touch 组合使用,可以增量监控数据改变的时间

详见:linux命令系列 stat & touch

Linux的进程优先级

Linux采用了两种不同的优先级范围,一种是用nice值,它的范围从-20 ~ +19, 默认为0;越大的nice值意味着更低的优先级,在Mac OS X中,进程的nice值代表分配给进程的时间片的绝对值;而Linux系统中,nice则代表时间片的比例。ps el命令中的NI列就是该进程的nice值。

另一种范围是实时优先级,其值是可以配置的,默认情况下它的变化范围是从0到99,与nice值相反,越高的实时优先级数值意味着优先级越高。任何实时进程的优先级都高于普通进程。可以通过ps -eo state,uid,ppid,rtprio,time,comm查看,RTPRIO列即为实时优先级,如果显示-,则说明它不是实时进程。

时间同步

第一步,安装ntpdate工具

yum -y install ntp ntpdate

第二步,设置时间为阿里服务器的时间

ntpdate ntp1.aliyun.com

第三步,将系统时间写入硬件时间

hwclock –systohc

使用screen

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。

安装方法

CentOS下

yum install screen -y

Debian下

apt-get install screen -y

新建一个叫yourname的session

screen -S yourname

列出当前所有的session

screen -ls

回到yourname这个session

screen -r yourname

远程detach某个session

screen -d yourname

结束当前session并回到yourname这个session

screen -d -r yourname

软硬链接

硬链接

ln /data/x.txt /data/b.txt

通过stat查看两个文件的信息:

stat x.txt
stat b.txt

Innode号一致,修改任何一个,另外一个都可以同步修改,删掉任何一个,不会影响另外那个,硬连接有两个重要限制:

第一个限制,硬链接不能引用其所在文件系统之外的文件。

第二个限制,硬链接不能引用目录。

软连接

ln -s /data/x.txt /data/b.txt

Innode号不一致,删掉x.txt个,b.txt的链接会丢失

拒绝用户登录

Linux用户管理之使用/bin/false和/usr/sbin/nologin拒绝用户登录及其功能分析(转)

获取系统的IOPS

创建一个新文件

touch mytest

安装fio工具

yum install -y fio

执行如下命令

fio -filename=mytest -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=500M -numjobs=10 -runtime=10 -group_reporting -name=mytest

Debian的SSH终端配色设置

Debian10在默认安装后,使用SSH连接后,命令和显示都呈黑白,不是很方便查看,可以通过如下方法来配置Linux的SSH连接的配色信息: Linux终端Terminal颜色改变设置

参考资料

linux下的exec命令

Linux命令行大全(第2版)

Linux就该这么学

Linux预习资料 提取码:7w30

CentOS6.x升级到CentOS7.x的注意事项视频 提取码: yhfd

Linux内核设计与实现

极客时间-Linux实战技能100讲

Linux文件权限详解

Linux losetup 命令

linux 输入、输出重定向的概念和用法详解(Day01)

Shell内置命令

posted @ 2021-09-13 23:42  Grey Zeng  阅读(630)  评论(0编辑  收藏  举报