Skip to main content

Linux 基础配置及命令行操作

Linux
KIGA
Author
KIGA
This is a personal blog, intended for sharing.
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} 的行。