Skip to main content
  1. Posts/

Linux 基础配置及命令行操作

585 words·3 mins
Linux
Table of Contents

免密登录配置
#

生成公钥、私钥

ssh-keygen -t rsa

写入公钥配置文件,不能省略

cat id_rsa.pub >> authorized_keys

Xshell 选择Public key,导入id_rsa 文件

VSCode 设置

Host 192.168.8.2
  HostName 192.168.8.2
  User root
  PreferredAuthentications publickey
  IdentityFile "C:/Users/X/Desktop/App/id_rsa"

btop 安装
#

git clone https://gitee.com/mirrors/btop.git
make && make install

查看本地DNS服务器地址
#

# systemd-resolve --status | grep 'DNS Servers'
DNS Servers: 192.168.8.101

查看服务器的公网 IP 地址
#

curl ifconfig.me
curl ifconfig.io

查询指定域名
#

# nslookup www.baidu.com
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 182.61.200.6
Name:	www.a.shifen.com
Address: 182.61.200.7

Windows ping IP Address
#

PS C:\WINDOWS\system32> Test-NetConnection xx.yy.com


ComputerName           : xx.yy.com
RemoteAddress          : 192.168.8.43
InterfaceAlias         : Ethernet
SourceAddress          : 10.1.4.2
PingSucceeded          : True
PingReplyDetails (RTT) : 0 ms

Linux IO 实践
#

$$ 当前进程
# cd /proc/$$/fd
dr-x------ 2 root root  0 Oct  7 08:54 ./
dr-xr-xr-x 9 root root  0 Oct  7 08:54 ../
lrwx------ 1 root root 64 Oct  7 08:54 0 -> /dev/pts/17
lrwx------ 1 root root 64 Oct  7 08:54 1 -> /dev/pts/17
lrwx------ 1 root root 64 Oct  7 08:54 2 -> /dev/pts/17
lrwx------ 1 root root 64 Oct  7 08:55 255 -> /dev/pts/17

创建进程

# exec 8<> /dev/tcp/www.baidu.com/80
dr-x------ 2 root root  0 Oct  7 08:54 ./
dr-xr-xr-x 9 root root  0 Oct  7 08:54 ../
lrwx------ 1 root root 64 Oct  7 08:54 0 -> /dev/pts/17
lrwx------ 1 root root 64 Oct  7 08:54 1 -> /dev/pts/17
lrwx------ 1 root root 64 Oct  7 08:54 2 -> /dev/pts/17
lrwx------ 1 root root 64 Oct  7 08:55 255 -> /dev/pts/17
lrwx------ 1 root root 64 Oct  7 08:54 8 -> 'socket:[237040623]'
echo -e 'GET / HTTP/1.0\n\n' >& 8

标准输出重定向到8

cat <& 8

kill -9无法杀死一般因为是僵尸进程
#

ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
-A 参数列出所有进程
-o 自定义输出字段 我们设定显示字段为
stat(状态),ppid(进程父id), pid(进程id),cmd(命令),这四个参数
因为状态为 z或者Z的进程为僵尸进程,所以使用grep抓取stat状态为zZ进程

Query process for using multiple swap memory
#

for i in $( cd /proc;ls |grep "^[0-9]"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10

# 81667 371.781M
# 81818 371.703M
# 1849767 281.137M

# ps aux | grep ${pid}

Detail:

cd /proc:将当前目录更改为 /proc 目录。
ls:列出当前目录中的所有文件和目录。
grep "^[0-9]":过滤掉所有不以数字开头的文件和目录。
awk ' $0 >100':过滤掉数字小于 100 的文件和目录。
for i in $(...) ;do ... ; done:循环处理每个符合前面条件的文件或目录。
awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null:对于每个文件或目录,使用 awk 在 /proc/$i/smaps 文件中搜索包含 "Swap:" 的行。然后将匹配行的第二列值相加,并输出进程 ID ($i) 和该进程使用的总交换内存大小(以兆字节为单位)。
2>/dev/null:将任何错误消息重定向到 /dev/null(一个特殊的文件,可以丢弃所有输出)。
sort -k2nr:按第二列的值以逆数值顺序排序输出。
head -10:仅显示输出的前 10 行(即使用交换内存最多的前 10 个进程)。
ps aux:列出当前正在运行的所有进程的详细信息。
|:管道符,将 ps aux 命令的输出结果传递给 grep 命令。
grep ${pid}:过滤出包含指定 ${pid} 的行。

当前登录用户信息
#

root@kiga:/home/kiga/test# who
root     pts/0        2024-06-20 03:06 (10.1.2.89)

查看登录失败的尝试
#

# Debian/Ubuntu 系统
grep 'Failed' /var/log/auth.log

# RedHat/CentOS 系统
grep 'Failed' /var/log/secure

root@kiga:/home/kiga/test# grep ‘Failed’ /var/log/auth.log Jun 17 10:04:14 kiga sshd[1265007]: Failed password for root from 192.168.8.244 port 38640 ssh2 Jun 17 10:04:19 kiga sshd[1265007]: Failed password for root from 192.168.8.244 port 38640 ssh2 Jun 18 08:53:51 kiga sshd[1428484]: Failed password for root from 192.168.8.244 port 51134 ssh2 Jun 20 03:05:54 kiga sshd[1737950]: Failed password for kiga from 10.1.2.47 port 61574 ssh2

最后一次登录信息
#

lastlog 命令显示系统中所有用户的最后一次登录信息。

root@kiga:/home/kiga/test# last
root     pts/0        10.1.2.89        Thu Jun 20 03:06   still logged in
root     pts/1        192.168.8.244    Tue Jun 18 08:55 - 08:55  (00:00)
kiga    pts/1        192.168.8.244    Tue Jun 18 08:54 - 08:55  (00:00)
kiga    pts/0        10.1.2.51        Tue Jun 18 03:16 - 11:30  (08:13)
kiga    pts/0        10.1.2.51        Tue Jun 18 01:25 - 03:16  (01:51)
kiga    pts/1        192.168.8.244    Mon Jun 17 10:04 - 12:18  (02:14)
kiga    pts/0        10.1.2.51        Mon Jun 17 09:41 - 12:08  (02:26)
kiga    pts/2        10.1.2.47        Thu Jun 13 08:09 - 09:27  (01:17)
kiga    pts/1        10.1.2.51        Thu Jun 13 08:02 - 12:00  (03:58)
kiga    pts/0        10.1.2.47        Thu Jun 13 08:00 - 01:59 (3+17:59)

Related

PAGECACHE、DENTRIES、INODES
360 words·2 mins
Kiga-Hub
Linux Linux
/proc # /proc 是一个虚拟文件系统,通过对它的读写操作做为与Kernel实体间进行通信的一种手段 通过修改/proc中的文件,来对当前kernel的行为作出调整
2024 Reading List Contents
71 words·1 min
Casual Essay
Daily life
Reading & Taking Notes Reading
技术 # 《Go 专家编程》
Download and install - The Go Programming Language
317 words·2 mins
Kiga-Hub
Casual Essay
Golang
Download and install # Download and install Go quickly with the steps described here.
Golang Concurrency Tutorial
2733 words·13 mins
Algorithm
Golang Concurrency # This tutorial covers introduction to concurrency system, concurrency versus parallelism and real world examples.
Documentation
1495 words·8 mins
mermaid usage # It is a JavaScript based diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically.