Linux 登陆欢迎提示信息的设置

Linux Linux 登陆欢迎提示信息的设置 1、/etc/issue /etc/issue 本地登陆显示的信息,本地登录前会提示。 先看下这个文件的内容: #cat /etc/issue Red Hat Enterprise Linux Server release 6.8 (Santiago) Kernel \r on an \m 字符都可以看得懂,但是 \r、\m 是什么意思呢,通过 man pam_issue 可以看出这些转义字符的意思。 字符 含义 \d 本地端时间的日期 \l 显示当前tty的名字即第几个tty \m 显示硬体的架构 (i386/i486/i586/i686…) \n 显示主机的网路名称 \o 显示 domain name \r 当前系统的版本 (相当于 uname -r) \t 显示本地端时间的时间 \u 当前有几个用户在线 \s 当前系统的名称 \v 当前系统的版本 2、/etc/issue.net /etc/issue.net 网络登陆显示的信息,登录后显示,ssh登陆需要由 sshd 配置。 若通过远程本文设备(如通过ssh或telnet等)登录,则显示该文件的内容。 其主要内容和 /etc/issue 类似,可以根据需求调整。 3、/etc/motd /etc/motd 常用于通告信息,如计划关机时间的警告等,登陆后的提示信息,也是用得最多的情况,也是最能玩出花的配置。 它和 issue 的区别在于,后者会在登陆账号前提示,前者会在登陆后出现。 最简单的用法 就是声明机器主权,这对于公司内部的虚拟机来说很重要,登进去弹出一个声明,就不会随意操作了,其次对于网络维护也有极大的作用。 ...

Linux 目录全称及解释

Linux Linux 目录全称及解释 /bin:binaries,存放可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。如果是非系统自带的命令一般在 /usr/bin。 /boot:boot,引导。放置 Linux 系统启动时用到的一些文件。/boot/vmlinuz* 为 Linux 的内核文件。/boot/gurb 存放了引导选项。建议对 /boot/ 单独分区,分区大小100 MB 即可。 /dev:device,设备。存放 Linux 系统下的设备文件。Linux 的一个理念,万物皆文件,所以设备也是文件。访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱。 /etc:etcetera,附加物。系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab(启动项)、/etc/fstab(磁盘分区)、/etc/init.d(启动相关)、/etc/X11(桌面相关)、/etc/sysconfig。 /home:home,家。新创建的用户所持有的目录皆为该目录的子目录。 /lib:libraries,库。系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。/usr/lib,/usr/local/lib 比较重要的目录为 /lib/modules。在该目录下有不少比较重要的子目录和文件,例如 /lib/modules/,/lib/systemd/。一般情况下,不要对该目录下的文件做操作。 /lost+found:lost+found 目录的文件通常是未链接的文件(名字以及被删除),这些文件还被一些进程使用(数据没有删除),在系统突然关机时(内核 panic 或突然断电)出现。这些文件系统会删除的。当因为软件或硬件出现错误,导致文件系统不一致,也有可能把有问题的文件放入到 lost+found 目录。它提供了恢复丢失文件的一种方法。 /media,media,媒体。Linux 中的挂载目录,插入 CD,USB 等存储设备都会被挂载这里。 /mnt:mount,挂载。挂载其他文件系统的目录,例如 iso 文件。 /opt:option,可选。这个目录是一些大型软件的安装目录,或者是一些服务程序的安装目录,和系统其他配置相对独立。 /proc: processes,进程。在这个目录下可以获取到 Linux 系统信息。Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等。 /root:root,根。系统管理员 root 的家目录,系统第一个启动的分区为 /,所以最好将 /root 和 / 放置在一个分区下。 /run:run,运行。该目录曾经是 /var/run。文件系统为 tmpfs。/var/run 目录中存放的是自系统启动以来描述系统信息的文件。比较常见的用途是 daemon 进程将自己的 pid 保存到这个目录。 标准要求这个文件夹中的文件必须是在系统启动的时候清空,以便建立新的文件。 /sbin:superuser binaries,超级用户二进制文件。超级管理命令,放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能”查看”而不能设置和使用。类似的目录有 /usr/sbin,/usr/local/sbin。 ...

Linux 磁盘相关操作

Linux Linux 磁盘相关操作 查看磁盘 lsblk 查看分区和磁盘 df -h 查看空间使用情况 fdisk -l 分区工具查看分区信息 parted /dev/xxx 查看分区 cfdisk /dev/sda 查看分区 blkid 查看硬盘label(别名) du --max-depth=1 . 统计当前目录各文件夹大小 cat /proc/scsi/scsi 查看 scsi 信息 MegaCli -PDList -aALL 部分 raid 卡硬件信息查看 格式化磁盘 # 分区 fdisk /dev/xxx gdisk /dev/xxx # gpt 分区,支持 2G 以上 help: - n 添加分区 - p 打印分区表 - q 退出,不保存 - w 保存退出 # 格式化 mkfs -t type /dev/xxx # 临时挂载空目录 mount /dev/xxx /path/ # 挂载有数据目录 mkdir /newpath mount /dev/sdb1 /newpath cp -pdr /tmp/* /storage # 拷贝数据到新分区 rm -rf /tmp/* umount /dev/sdb1 mount /dev/sdb1 /tmp # 重新挂载到 /tmp # 永久挂载 vim /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda1 during installation UUID=fa031033-be88-4c7e-8cd5-2325c877b181 / ext4 errors=remount-ro 0 1 /swapfile none swap sw 0 0 LVM 挂载磁盘 # 做 LVM 分区 sudo gdisk /dev/xxx n 回车 Hex code:8e00 w y # 做物理卷PV sudo pvcreate /dev/sdd1 pvs # pvs 查看pv # 创建卷组 VG sudo vgcreate -s 32M nickvg /dev/xxx # 创建叫 nickvg 的 vg -l:卷组上允许创建的最大逻辑卷数 -p:卷组中允许添加的最大物理卷数 -s:卷组上的物理卷的PE大小 sudo vgs nickvg # 创建逻辑卷 LV ## 在 nickvg 上创建名称为 nicklv00 的容量为 15G 的 LV sudo lvcreate -L 15G -n nicklv00 nickvg sudo lvs nickvg/nicklv00 # 格式化逻辑卷 sudo mkfs.ext4 /dev/nickvg/nicklv00 # 挂载目录 sudo mkdir /home/xxx sudo mount /dev/nickvg/nicklv00 /home/xxx sudo df -lh # 开机挂载 echo '/dev/mapper/nickvg-nicklv00 /home/doc ext4 defaults 0 0' >> /etc/fstab # 简单脚本 pvcreate /dev/xxx vgcreate -s 32M vg01 /dev/xxx lvcreate -L nT -n lotus vg01 mkfs.ext4 /dev/vg01/lotus rm -rf /opt/lotus mkdir /opt/lotus mount /dev/vg01/lotus /opt/lotus chown -R xxx:xxx /opt/lotus echo '/dev/vg01/lotus /opt/lotus ext4 defaults 0 0' >> /etc/fstab 参考 磁盘阵列划分时LVM的概念和操作 pvcreate命令 centos7.4 fdisk磁盘分区 格式化 挂载 Linux 磁盘分区、格式化、目录挂载 Linux查看硬盘信息

Linux 软 RAID 配置

Linux RAID Linux 软 RAID 配置 最近出了个 PCIe 3.1 x16 转 4 个 X4 M.2 SSD NVME 固态硬盘转接卡,正好一般的主板上只有一个 m.2 接口,难以扩展容量,将整了个转接卡,上面配上 4 个 nvme 的固态盘。 安装好了,在系统内识别成四块独立的 nvme 盘,不便于管理,就想着用软 RAID 实现加速和扩展。单盘理论速度是 3500MB/s,希望 RAID0 之后会有提升。 在 Linux 中通常是使用 md 模块来实现软件 RAID,这个模块系统在 Linux 3.6 之后集成,但是需要手动安装它的管理工具。 安装 mdadm 工具 建立分区表(默认msdos) 指定磁盘分区类型 创建软 raid 盘 格式化磁盘 $ sudo apt install mdadm $ fdisk /dev/nvme0n1 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x7bfec905. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). # 添加新分区 Command (m for help): n Command action e extended p primary partition (1-4) # 选择分区类型 p # 设置分区号 Partition number (1-4): 1 First cylinder (1-5221, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-5221, default 5221): Using default value 5221 # 打印支持的分区格式类型 Command (m for help): l 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx 5 Extended 42 SFS 86 NTFS volume set da Non-FS data 6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility 8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt 9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b 11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor 12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor 14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary 16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS 17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto 1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT 1e Hidden W95 FAT1 # 更改分区类型 Command (m for help): t Selected partition 1 Hex code (type L to list codes): fd # 设置分区类型为RAID Changed system type of partition 1 to fd (Linux raid autodetect) Command (m for help): p # 打印信息 Disk /dev/sdb: 42.9 GB, 42949672960 bytes 255 heads, 63 sectors/track, 5221 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x7bfec905 Device Boot Start End Blocks Id System /dev/sdb1 1 5221 41937651 fd Linux raid autodetect Command (m for help): w # 保存分区信息 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. 至此,准备工作完成了。 ...

Login shell 和 Non-Login shell 的区别

Linux Shell Login shell 和 Non-Login shell 的区别 Difference between Login shell and Non login shell shell 程序,例如 Bash,使用了一系列启动脚本去创建环境。每一个脚本有独特的作用,对登陆环境有不同的影响。后续执行的脚本的可以覆盖先前执行的脚本产生的值。 对于登录Shell和非登录Shell,启动配置有所不同。 Login shells Non login shells Login shells 使用 /bin/login 通过读取 /etc/passwd 文件成功登录后,将启动 Login shell。登录 shell 程序是在登录会话时在用户 ID 下执行的第一个过程。Login 进程告诉 shell 程序遵循以下约定:传递参数0(通常是 shell 程序可执行文件的名称,例如 bash),并带有“-”字符。例如,对于Bash shell,它将是-bash。 当 bash 被调用为 Login shell: -> 登陆进程 调用 /etc/profile -> /etc/profile 调用 /etc/profile.d/ 下的脚本 -> 登陆进程 调用 ~/.bash_profile -> ~/.bash_profile 调用 ~/.bashrc -> ~/.bashrc 调用 /etc/bashrc Login shell 出现包括以下情况: ...

Lotus CLI 以及 Pond GUI 的使用

[[IPFS]] [[Filecoin]] [[Lotus]] Lotus CLI 以及 Pond GUI 的使用 说明 Lotus 是基于 IPFS 技术上的激励层 FileCoin 的一种实现,它区别于 go-filecoin 是一种不同的实现,但是底层的架构极为相似。 Lotus CLI 是实现 Lotus 的命令行界面工具。 Pond GUI 是基于 Lotus 的图形用户界面。 Lotus 的安装 需要依赖 go (1.13 or higher) gcc (7.4.0 or higher) git (version 2 or higher) bzr (some go dependency needs this) jq pkg-config opencl-icd-loader opencl driver (like nvidia-opencl on arch) (for GPU acceleration) opencl-headers (build) rustup (proofs build) llvm (proofs build) clang (proofs build) 下载 $ git clone https://github.com/filecoin-project/lotus.git $ cd lotus/ 安装 $ make clean all $ sudo make install 安装过程会出现不少问题,其中一个就是没有 rustup 工具。可以参考 Rust 版本管理工具: rustup。安装完 rustup 可以配置 Rust Crates 镜像,以加快安装编译的速度。 ...

Lotus daemon 全过程

[[Lotus]] Lotus daemon 全过程 lotus daemon 会生成一个守护进程,那么它在这个过程中做了哪些事? 大致过程 通过命令行读取参数 拿到指定的 repo 或者使用默认的 repo(就是一个路径值),计作 $PATH,根据它进行服务初始化的操作 根据是否存在 $PATH/datastore,判断是否已经运行过服务,如果运行过就报警告,否则创建 $PATH 目录 创建默认的 $PATH/config.toml 文件 创建 $PATH/keystore 文件夹 根据 build/proof-parameters.json/parameters.json 里的数据对 /var/tmp/filecoin-proof-parameters/ 的证明参数文件进行校验 如果制定了 genesis 参数,则使用,否则从 build/genesis/devnet.car 生成,生成块逻辑比较复杂,如果指定了 lotus-make-random-genesis 和 genesis-presealed-sectors 参数,则可以通过逻辑生成一个,逻辑比较复杂 然后就是创建一个逻辑节点,先声明了一个接口,定为 api 通过 node.New 生成一个完整节点,第一步先把 子系统的api 和主节点的 api 绑定在一起,具体实现依赖的是子系统 根据节点类型,会更新一些配置项,配置项分为:调用,模块,会有非常多的模块,比较重要的有 SetApiEndpointKey 通过 serveRPC 返回一个 rpc 服务

Lotus send 全过程

Lotus Lotus send 全过程 lotus send 可以在钱包间转账。 大致过程 获得操作句柄(拿到api) 计算对方钱包地址 计算转账量 使用api的默认钱包地址或者指定的钱包地址 将转账信息记录到 mpool 里 获得操作句柄 通过 repo 参数(默认为~/.lotus),找到一个存储数据的路径,记为 PATH 从 $PATH/api 拿到 api 端点信息,通过 multiaddr.NewMultiaddr 转换为 byte 数组, 记为 apiInfo apiInfo 通过 manet.DialArgs 解析出协议和 Linux 网络地址 从 $PATH/token 拿到 token 信息,并加在默认 http.header 里,至此已经拿到了 网络地址 和 带 token 的 header 再根据拿到的两个数据通过一次 NewFullNodeRPC 处理,拿到操作句柄(暂时是一个struct),网络关闭函数 计算对方钱包位置 从命令行拿到原始的数据,记为 wls 对 wls 进行解码,根据 wls 的第二位判断协议类型,从第三位到结尾则是原始数据,记为 raw,进入下一步解码 使用一个自定义的 encoding 对 raw 进行解密,然后拆分成 payload 和 cksm 使用 ValidateChecksum 检测 payload 是否有效 通过 protocol 和 payload 创建新的地址,此时就拿到了钱包地址 计算转账量 这个纯粹就是通过字符串进行数学运算,牵扯到的过程还挺复杂的,主要依赖了 math/big/Rat 结构体,它表示任意精度的商 a / b 比较重要的一步转换是通过创建一个 big.NewRat(build.FilecoinPrecision, 1),然后对转账量进行一个处理,简单来说就是放大 10^18 次方(针对十进制),并且使b为1 使用api的默认钱包地址或者指定的钱包地址 如果指定了 source 信息,则类似 计算对方钱包位置 一样计算一个钱包地址 如果没有指定,则使用 api 的 WalletDefaultAddress 方法实现 通过 ~/.lotus/keystore 里的文件进行查询 将转账信息记录到 mpool 里 构建一个 message 结构,目前 GasLimit 和 GasPrice 都是固定的 使用 api 的 MpoolPushMessage 方法实现 通过 message 进行处理,判断余额是否足够传递 通过 mp.getNonceLocked 拿到 nonce 将 nonce 加入到 message里,对 message 的每一项数据根据类型进行不同处理,将结果写入到buffer,记为data,然后根据data生成一个cid,这两个参数通过 block.NewBlockWithCid 获取新块 通过 message 的 from address 和 cid 信息,创建签名文件 通过 PubSubPublish 进行数据传递 数据传递过程

m.2 接口 SSD

Hardware m.2 接口 SSD M.2接口(原NGFF,Next Generation Form Factor)是Intel主推的一种替代mSATA的新接口规范。最初,Intel主要是为了超极本的存储需求才急切推出这种新的接口标准。 m.2 SSD 的规格 与 mSATA SSD 类似,M.2 SSD 也不带金属外壳。主要有 2242、2260、2280 三种规格,为了划分不同长度的产品而定的。长度不同,意味着容量就不同。因为长度越长,可布置的闪存颗粒就越多,容量也就越大。以 M.2 2242 为例,22 是宽度 22mm,42 是长度 42mm,2260 与 2280 同为此理。至于M.2 SSD的厚度,单面布置芯片厚度2.75mm,双面厚度3.85mm,比mSATA还要薄。 m.2 SSD 接口的分类 总体可以分为 M key 和 B key,以及混合的 B & M key。 下表是按照 SSD 上的接口进行区分。主板上只有 B key 和 M key 两种,B & M key SSD 插在主板的 M key 上。 类别 别名 分辨 协议 速率 M key m.2 socket3 SSD 上有一个缺口,且缺口右侧为 6 pin PCI-E 3.0 * 4 2300 MB/s B key m.2 socket2 SSD 上有一个缺口,且缺口左侧为 5 pin SATA 3.0 500 MB/s B & M key - SSD 上有两个缺口,第一个缺口左侧为 5 pin,第二个缺口右侧为 6 pin SATA 3.0/PCI-E 3.0 * 2 700 MB/s m.2 SSD 的兼容问题 有的主板仅支持 PCI-E 通道,不支持 SATA 通道,像华硕 Z97-A 主板。如果将走 SATA 通道的 M.2 SSD 接在华硕 Z97-A 上将无法被识别。有的则兼容 SATA 与 PCI-E 通道,如技嘉的 Z97X-UD3H。 ...

Make 命令使用

Linux Make 命令使用 make 顾名思义就是用于制作的工具,可以制作普通文件,也可以制作二进制文件,也就是说,它可以组织程序的编译过程,得到输出的文件。 基础概念就是:make 命令会查找当前目录下的 Makefile 文件,并根据该文件的指示一步步的去操作,最后创建目标文件。 具体的用法可以参照: Make 的概念 Makefile 文件的格式 Makefile 文件的语法 Makefile 的实例 总体来说,make 本身是不难的,但是基于 makefile 内部的操作是复杂的。makefile 的一大难点是自动变量。