linux trance php,Linux学习笔记

Linux学习笔记

linux100讲学习笔记,课程零碎的记录

vim 四种模式

正常模式:

​ 复制

​ yy复制整行

​ 数字yy (如 5yy) 复制从当前行到往下数5行

​ y$从当前复制到末尾

​ 剪切

​ dd 同yy

​ d$

​ 粘贴 p

​ 重做 (ctrl+ r)

​ 撤销 u

​ 进入插入模式:

​ i 直接进入,并且插入位置在光标位置

​ I 光标所在行的行首

​ a 光标位置后一位

​ A当前行最后

​ o当前所在行的下一行(产生新一行)

​ O当前行上一行插入新行

​ 单个字符删除 x

​ 单个字符替换 光标移动到指定字符 按r 接着输入新的字符

​ 光标移动到指定行 数字+ G (shift +g)

​ 首 g 行尾 G

​ 正常模式下光标到行首^ 行尾 $

插入模式:

命令模式:

​ :set nu 文本显示行号

​ :q q! wq

​ 查找 /需要查找的字符 查找到之后 按u查找下一个 U上一个

​ 替换

​ :s /将被替换的字符/替换字符 (光标所在行)

​ :%s 整个文本查找

​ :3,5s 从3~5行查找替换

​ :s /将被替换的字符/替换字符/g 对找到的所有匹配项全部替换

视图模式:

​ v V ctrl+v

用户与用户组管理

id 用户名 查看用户的用户组信息

useradd 用户名 添加用户 (root 用户才有权限) 可知直接新建时指定组 useradd -g 组名 用户名

/etc/passwd 和 /etc/shadow 中会记录系统中的用户 /etc/group

passed 用户名 给指定用户设置其他人的密码,不加用户名 则设置自身密码

userdel 删除用户 userdel -r 同时删除用户的家目录

usermod 修改用户属性 usermod -g 修改后的组 用户名

chage 限制用户在什么情况下可以登录

groupadd groupdel

visudo 授权普通用户执行指定的高权限用户(不需要密码)

​ 进入编辑界面 授予的用户 ALL(host) 命令路径 参数

文件与目录

文件与目录权限drwxrwxrwx

939e6d0e59969af4c18df32c01208c5d.png

网络

网络管理

43f02dddb130e45c722d30728467e29b.png

​ /vim /etc/default/grub 在GRUB_CMDLINE_LINUX=””中添加

​ 再执行:grub2-mkconfig -o /boot/grub2/grub.cfg 修改成eth0格式的网卡命名方式

​ 查看网卡物理连接情况 mii-tool eth0

net-tools

​ ifconfig

​ route

​ netstat

​ iproute

​ ip

​ ss

网络配置

​ 查看网络配置

​ 修改网络配置

69dcfdfcc87b763a4b96fab8d3faa742.png

网络故障排除命令

8af7ae297473f1fcd8ab8fc3ffee3a7b.png

tranceroute 查看每一跳 tranceroute -w (wait) 1 (时间 单位s)

mtr 检查中间是否又数据包丢失

nslookup 域名对应的IP是否解析正确

telnet 检查端口是否正确

tcpdump

tcpdump -i any -n host XXX and port XXX -w /tmp/dumpfile

netstat -n(显示IP不是域名) -t(tcp方式截取) -p(进程) -l(listening状态的服务)

ss

网卡配置文件地址:/etc/sysconfig/network-scripts/ifcfg-eth0

强制修改Root密码

启动选项界面,按e进入编辑模式,找到Linux16开头的行,在最后加入 rd.break (cetos7)

这时候是Root用户,但是是一个临时系统。真正的体统根目录在 /sysroot

重新挂载sysroot为可读写模式 mount -o remount ,rw /sysroot

修改临时系统的根目录为真实体统的根目录 chroot /sysroot 这样对临时root用户做的操作,就会实际修改真实的操作系统中的信息

echo 123456 | passwd –stdin root

SELinux会检测修改密码的操作不是标准修改,导致无法进入系统,这里需要关闭它

关闭SELinux vim /etc/selinux/config 把 SELINUX=enforcing改为disabled

最后重启

进程管理

运行./a.sh 后台运行 ./a..sh &

如果是在后台运行,通过jobs命令查看有几个后台程序(会带有编号),然后使用 fg 编号 调到前台运行。

如果是在前台运行,可以使用Ctrl+Z暂停,再 jobs 再 bg 编号 (后台运行) fg 编号 (继续前台运行)

kill -9 pid 强制关闭某个进程

systemctl

​ /lib/systemd/system中

内存与磁盘管理

使用率查看

内存使用率 free top

​ free -m 按兆现实 top实时更新

磁盘使用率 fdisk df du

du与ls区别 du 查到的是实际占用的空间。ls查到的是文件从头到尾的计算值

dd if=afile of=bfile bs(块大小)=512 count=1(一块)

df -h

EXT4文件系统

超级块 记录整个文件系统/分区中包含多少文件 df查看的就是这里

超级块副本

i节点 记录每一个文件 名称 大小 编号 权限 注意:文件名记录在父母离的i节点

数据块 如果i节点(一个数据块)存不下,会在i节点挂在更多数据块。因此根据实际使用的数据块的多少就能统计数据块的大小(du 命令),而ls统计的是i节点当中记录的文件大小信息(i节点有可能挂载空的block)

文件操作

touch cp mv 而vim(会修改i节点,实际修改的是一个临时文件,保存是替换)

创建链接 (类似于windows的快捷方式)实际通过i节点连接 命令为ln (跨分区或文件系统无效,可以通过软链接实现,ln -s)

chmod chown 修改链接文件的权限 无效,实际还是以被链接的文件实际权限为准

facl文件权限高级操作

getfacl 文件名 获取用户的属主、属组 及对应角色的权限

setfacl -m(赋予) -x(回收) u:用户名(或者g:组名):rwx 文件名

分区和挂载

常用命令

fdisk 创建分区 如fdisk 、/dev/sdb

mkfs 格式化分区 mkfs.ext4(这里有好几个选项。不同的格式) /dev/sdb1

parted 大于2T的磁盘需要这个分区

mount 分区是无法被读取的,需要挂载到指定的目录上,对该目录读写,就会落入磁盘对应的分区上

先mkdir /mnt/sdb1 再 mount /dev/sdb1 /mnt/sdb1

mount 不带参数就是查挂载的情况

常见配置文件/etc/fatab 将常用命令指令固化(常用命令关机失效,上面的挂载关机后就没了)

Shell篇

什么是shell shell 是命令解释器,用于解释用户对操作系统的操作

Linux 启动过程 BIOS-MBR-Bootloader(grub)-kernel-systemd-系统初始化-shell

看MBR

dd if=/dev/sda of mbr.bin bs(块大小)=512 count=1(一块) 导出整个sda中的启动引导文件(固定512字节)

chmod u+rx filename 给文件赋予可执行的权限(可读可执行)

命令的执行bash ./filename.sh 在终端产生子进程执行,无需赋予执行权限

./filename.sh 同上,需要在命令文件首行指定解释器,需要赋予执行权限

source ./filename.sh 在当前进程运行,命令执行会影响当前运行环境

. filename.sh 同上

内建命令和外部命令:内建命令不需要创建子进程,而外部命令需要

内建命令对当前shell生效

管道与重定向

管道

管道与管道符:管道符 | 将一个命令的执行结果传递给后面的命令。如

ps | cat

echo 123 | ps

管道符将后面的命令创建子进程,将左边进程的标准输出与右边进程的标准输入建立管道通信

管道符是通过创建子进程的方式连接两个命令,因此在管道符右边的命令使用了cd/pwd等内建命令不会影响当前环境

子进程与子shell

重定向符号

输入重定向 <

输出重定向 > 覆盖 >> 追加 2> 文件描述符2重定向(错误信息重定向) &> 正确错误全部输出到指定文件

输入与输出重定向组合:一般用于生成配置文件

#! /bin/bash

# 将生成一个新a.sh文件,内容为"generate new sh"

cat > /root/a.sh <

echo "generate new sh"

EOF

变量

变量赋值

变量名=变量值 不能有空格

l=ls 将命令赋给一个变量 相当于给命令其别名

let c=$(ls -l /etc) 将命令执行结果赋值给变量

变量作用范围

定义的变量在子进程 父进程 子Shell(bash命令)平行shell 都无效,旨在自身进程有效

如 bash ./filename.sh 脚本中定义了变量,是不会传递到当前环境的。如果需要传到当前环境,需要使用source ./filename.sh

在父进程执行 export var1 则在子进程就能获取到var1这个变量

unset 变量名 删除赋值

环境变量

$PATH

PATH=$PATH:/root 在环境变量后面追加一个路径,这个方法对自身和子Shell生效,新开启的Shell无效。如果需要全局生效,可以在bashrc配置文件中配置。

预定义变量

$? 确认上一条命令是否正确执行,正确0 不正确1

$$ 显示当前进程的PID (脚本监测 脚本运行状态时使用)

$0 当前进程的名称

位置变量

$1 $2 $3 $…${10}…

$0 表示脚本名称

$* 表示所有传入参数的数组

$# 参数的数量

执行脚本时传入的参数

避免读入空值,如果参数没有指定,指定默认值”_“ :${2}_

如果对位置变量进行赋值,这样的操作会在传入值后面多出一个下划线,解决方案:替换语法:pos1=${2-_} 如果是空才用下划线赋值。

环境变量配置文件

/etc/profile

/etc/profile.d

~/.bash_profile

~/.bashrc

/etc/bashrc

按以上顺序加载。如果有重复,则后面会替换前面的

bashrc profile的区别 用户登录时加“-”号 所有配置都生效,如果切换用户时不加 “-”号,则只有bashrc中的配置生效。

数组

定义 var1=(aaa bbb ccc)

echo ${var1[@]} 取全部数据

echo ${#var1[@]} 统计数组个数

判断

test判断程序中的细节问题

test -f filename 检测是否存在并且是一个常规文件

也可以简化成 [-t filename]

echo $? 为0表示test正常退出,1表示异常,即文件不存在或者不是标准文件类型

结合if和test

# 如果是Root用户,就显示条件体中的内容

if [$UID = 0]

then

echo "root user"

fi

实际上if也可以判断一个命令执行是否成功

# 如果是Root用户,就显示条件体中的内容

if [pwd = "sss"]

then

echo "sss working directory"

fi

if else

#! /bin/bash

# if else demo

if [$USER = root]; then

echo "root user"

else

echo "other user"

fi

case

#!/bin/bash

#

case "$1" in

"start"|"START")

echo $0 "starting"

;;

"stop"|"STOP")

echo $0 "stop"

;;

"restart"|"reload")

echo $0 "restarting"

;;

*)

echo "usage hint"

;;

esac

for

while until

break continue

使用循环处理位置参数

#!/bin/bash

for parm in $*; do

if[ "$param" = "help" ]

echo "include help parameter"

fi

done

自定义函数function cdls() {

cd /$1

ls

# 函数内的变量

local local_var

#$1 $2 ... 传参

}

#使用,/tmp是传入的一号参数

cdls /tmp

========================================

#!/bin/bash

# function可以省略

checkpid() {

local i

for i in $*; do

# if test 的简单写法

[ -d /proc/$i ] && return 0

done

return 1

}

信号

trap命令能够捕获传给进程的信号,-9是不能捕获的,kill -9 pid 会强制关闭进程

#!/bin/bash

# signal demo

# 捕获15号信号,如果收到就输出相应提示

trap "echo sig 15" 15

# 2号信号表示 Ctrl+C

trap "echo sig 2" 2

# 输出当前进程号

echo $$

#保持进程不结束

while :

do

:

done

vim sed awkvim是交互式的。有正常模式、输入模式、视图模式等等,实时与用户进行交互的编辑器。sed awk 是非交互的,在执行之前就要指定好逻辑

sed awk 是 行编辑器

sed末世空间

将文件以行为单位读取到内存

使用sed的每个脚本对该行进行操作

处理完后输出该行

sed ‘s/被替换内容/替换内容’ 只替换匹配的第一个

推荐您阅读更多有关于“Linux,shell,”的文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值