Linux-Note

Table of Contents

traceroute

traceroute www.example.com
  • 其输出会显示数据包经过的每个路由器的 IP 地址和往返时间等信息。

ufw

  • Ubuntu 18.04 LTS 默认的防火墙是 ufw(Uncomplicated Firewall)。
sudo ufw status
sudo ufw enable && sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443

# 对内暴露 8080 端口:
sudo ufw allow in 8080

# 允许本机对外访问所有端口:
sudo ufw default allow outgoing

# 拒绝特定端口:
sudo ufw deny 8080

# UFW 防火墙将恢复到初始的默认状态
sudo ufw reset

nginx尾斜杠的坑

Q: nginx,配置:

location / {
	proxy_pass http://127.0.0.1:8888/;
}
访问:http:{domain}/mall-admin-abc,正常


location ^~ /mall-admin {
	proxy_pass http://127.0.0.1:8888/;
}
访问:http:{domain}/mall-admin-abc,404了

A:来自ChatGPT的回答:

这个问题的原因在于 proxy_pass 的使用,特别是当代理到不同的 URI 时。
对于第一个配置 location /,任何请求都会被代理到 http://127.0.0.1:8888/,并且请求的 URI 部分会被直接附加到代理服务器的地址后面。因此,http://{domain}/mall-admin-abc 实际请求的是 http://127.0.0.1:8888/mall-admin-abc,因此能够正常工作。
然而,对于第二个配置 location ^~ /mall-admin,使用了 proxy_pass 同样的语法 http://127.0.0.1:8888/;。问题在于,当使用 proxy_pass 与非根位置块(例如 location /something)时,如果 proxy_pass 指定的是带有尾随斜杠的地址,会导致请求的 URI 被映射至代理目标的根路径,而忽略了源请求中 URI 的匹配部分(即 /mall-admin)。
为了修复这个问题,您可以移除 proxy_pass 目标 URL 末尾的斜杠(如果您的目标目录结构不需要),任何匹配的 location 块的 URI 将会透传给代理地址。这样,http://{domain}/mall-admin-abc 请求会正确地代理到 http://127.0.0.1:8888/mall-admin-abc,以下是修正后的配置示例:
nginx

server {
    # ...其他配置可能存在...

    location ^~ /mall-admin {
	proxy_pass http://127.0.0.1:8888;
	# 确保不要在代理URL最后加斜杠

	# 其他代理配置如上面的示例...
    }

    # ...其他 location 配置...
}

确保在做出更改后,运行 nginx -t 命令测试配置文件的语法,然后使用 nginx -s reload 或者 service nginx reload(根据您的系统)来重载配置。这样应该能够解决您遇到的 404 问题。

Q:macOS Sonoma新增了一个功能——屏幕上的大写锁定指示器。有没有办法禁用它?

sudo mkdir -p /Library/Preferences/FeatureFlags/Domain
sudo /usr/libexec/PlistBuddy -c "Add 'redesigned_text_cursor:Enabled' bool false" /Library/Preferences/FeatureFlags/Domain/UIKit.plist

journalctl日志

//检查当前journal使用磁盘量
journalctl --disk-usage

// 清理方法可以采用按照日期清理,或者按照允许保留的容量清理
journalctl --vacuum-time=2d
journalctl --vacuum-size=500M

查看用户

  • cat /etc/passwd | cut -f 1 -d :

注:| 是管道,把cat的输出传给cut处理;后面的cut取出每一行的以:分割的第一栏

/etc/passwd 文件存放的是用户信息.由六个分号组成的7个信息,分别是:

  • 用户名 (magesh): 已创建用户的用户名,字符长度 1 个到 12 个字符。
  • 密码(x):代表加密密码保存在 `/etc/shadow 文件中。
  • 用户 ID(506):代表用户的 ID 号,每个用户都要有一个唯一的 ID 。UID 号为 0 的是为 root 用户保留的,UID 号 1 到 99 是为系统用户保留的,UID 号 100-999 是为系统账户和群组保留的。
  • 群组 ID (507):代表群组的 ID 号,每个群组都要有一个唯一的 GID ,保存在 /etc/group文件中。
  • 用户信息(2g Admin - Magesh M):代表描述字段,可以用来描述用户的信息(LCTT 译注:此处原文疑有误)。
  • 家目录(/home/mageshm):代表用户的家目录。
  • Shell(/bin/bash):代表用户使用的 shell 类型。
//查看用户
cat /etc/passwd
or
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
or
cat /etc/passwd | cut -f 1 -d :

//查看用户组
cat /etc/group

//查看当前活跃的用户列表
w

nmap

##自行设置端口范围进行扫描
nmap -p22,80,7771 192.168.34.90
nmap -p1-9999 192.168.34.90

Linux 关闭/开启密码登录(仅证书登录)

 vim /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

#默认PasswordAuthentication 为yes,即允许密码登录,改为no后,禁止密码登录
PasswordAuthentication no

重启服务 service sshd restart

ssh生成公私钥:

  • ssh-keygen -t [rsa|dsa]
  • 根据提示起名(例子:ykyk),不输密码
  • 生成2个文件:ykyk 和 ykyk.pub
  • 将公钥考到对方机器的用户目录下 ,并将其复制到~/.ssh/authorized_keys中(操作命令:cat ykyk.pub >> ~/.ssh/authorized_keys )
  • 设置.ssh/ 目录的权限为==700==;
  • 设置authorized_keys权限为600;($ chmod 600 authorized_keys)

说明:

  1. 生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys
  2. 某个机器生成自己的RSA或者DSA的数字签名,将公钥给目标机器,然后目标机器接收后设定相关权限(公钥和authorized_keys权限),这个目标机就能被生成数字签名的机器无密码访问了

ssh连接长时间不断开

  • 修改系统 ssh 端配置文件:
sudo vi /etc/ssh/ssh_config

ServerAliveInterval 30 //每隔 30 秒向服务器发送一个空数据包

bashrc 里 alias 加参数如何做?

alias ttt='test() { echo $1;}; test'

然后终端输入:ttt 33,就会输出 33

eg:
alias lg='log() { git lg -$1; echo -e "\n";}; log'

ss-server

ssh timeout

修改自己用户目录下的.bashrc 文件,加上

export TMOUT=1000000 (以秒为单位)

然后运行:

source ~/.bashrc

在/etc/ssh/sshd_config 中加入:

ClientAliveInterval=60

每一分钟,sshd 都和 ssh client 打个招呼,检测它是否存在,不存时即断开连接。

chmod,chown,chgrp

chown

chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:用户组名称 文件或目录

示例 1:
[root@localhost home]# touch testfile //由 root 用户创建文件
[root@localhost home]# ls testfile –l
-rw--w--w- 1 root root 0 Jun 7 19:35 testfile //文件的拥有者及拥有者级均为 root
[root@localhost home]# chown yangzongde testfile //修改文件拥有者为 yangzongde
[root@localhost home]# ls testfile -l
-rw--w--w- 1 yangzongde root 0 Jun 7 19:35 testfile //查看文件拥有者为 yangzongde,但组仍为 root
示例 2:
chown bin install.log
ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log
chown root:root install.log
ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

chgrp

chgrp [-R] 用户组名称 dirname/filename ...

示例 3
[root@localhost home]# ls testfile -l
-rw--w--w- 1 yangzongde root 0 Jun 7 19:35 testfile //查看文件拥有者为 yangzongde,但组为 root
[root@localhost home]# chgrp yangzongde testfile //修改拥有者组为 yangzongde
[root@localhost home]# ls testfile -l
-rw--w--w- 1 yangzongde yangzongde 0 Jun 7 19:35 testfile
[root@localhost home]# chown root:root testfile // 使用 chown 一次性修改拥有者及组
[root@localhost home]# ls testfile -l
-rw--w--w- 1 root root 0 Jun 7 19:35 testfile
示例 4
[root@linux ~]# chgrp users install.log
[root@linux ~]# ls -l
-rw-r--r--  1 root users 68495 Jun 25 08:53 install.log
示例 5
更改为一个 /etc/group 里不存在的用户组
[root@linux ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 出现错误信息~找不到这个用户组名~

文件分割/合并

源文件:TW-REL-4.0.8.3.zip

//分割
split -b 11m TW-REL-4.0.8.3.zip tw_4083_

//合并
cat tw_4083_* > tw_4083_all.zip

tcpdump

sudo tcpdump -i ens192 host 192.168.3.130

less 乱码

export LESSCHARSET=utf-8
export LESS=Mrf

修改主机名

hostname yk #临时生效

hostnamectl set-hostname yk #永久生效

vi /etc/hostname #永久生效

建用户并赋予 sudo 权限

adduser yk
passwd yk(q123456)
whereis sudoers
ll /etc/sudoers
chmod +w /etc/sudoers
vi /etc/sudoers
- 在 root ALL=(ALL) ALL 下面增加
- yk ALL=(ALL) NOPASSWD: ALL
chmod -w /etc/sudoers
su yk

# 完全删除用户
userdel -r yk

# 查看是否删除干净
find / -name "*yk*"


禁用 ping

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

netstat

查看当前服务器的端口监听状态
netstat -tunl

查看已经联机的连接状态
netstat -tun

查看端口对应什么服务
netstat -antlp

mac osx 终端批量删除文件

find ./ -name "*.html" -exec rm -rf {} \;  # 注意 {}和\;之间有空格
find [目录名] -name "文件名" -exec rm -rf {} \;

# 搜索删除文件,例如:
find / -name *.raw -exe c rm -rf {} \;

其中,

  • -exec 表示后面执行命令 "{}" 表示查询到的文件名 -rf 为删除命令 rm 的参数
  • r 表示递归删除
  • f 表示不需要确认,两个参数可根据需要去留

查找并杀死 tomcat

  • sudo kill -9 `ps -ef|grep tomcat | grep -v grep | awk '{print $2}'`

ls 命令

ls -lt # 按时间排序(默认倒序)
ls -lt | tac # 按时间升序排序
ls -lSh #按大小排序(默认倒序)

ls -lh  #按 M 显示文件大小

ls | wc -w  #查看文件数量

ls -F | grep "/$"   #只显示目录

ls -al | grep "^d"  #只显示目录

ls -al | grep "^-"  #只显示文件

ls -l | grep "^-" | wc -l #查看文件个数

ls -l | grep "^d" | wc -l #查看目录个数

ls -Rl | grep "^-" | wc -l # 递归查看目录里面所有文件文件个数

du / df 命令

#按文件大小排序并拿出最大的 20 个
du -h ./* | sort -hr | head -20

#查看每个文件夹的大小
du   -sh    /*

#只显示 1 层目录
du -d 1 -h

#只显示 2 层目录
du -d 2 -h

# 查看硬盘使用情况
df -h

# 查看内存
free -h

mac 网关和路由

临时添加 sudo route -n add -net 192.168.1.0 -netmask 255.255.255.0 192.168.0.170  
查看 netstat -nr grep 170
外链 https://blog.csdn.net/weixin_34356310/article/details/89777649  

杀掉查询出来的进程

  • ps -ef|grep mongo | grep -v grep | awk '{print $2}' | xargs kill -4

pbcopy

#copy id_rsa.pub 文件的内容到剪贴板:
pbcopy < ~/.ssh/id_rsa.pub

#粘贴剪贴板的内容
pbpaste

arp -a

查看局域网中所有使用的 ip 和 mac 地址

软连接

  • sudo ln -s "/Applications/subl.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl3
  • sudo ln -s "/Applications/vscode.app/Contents/Resources/app/bin/code" /usr/local/bin/vscode

mac ox 终端显示 bogon 的问题

sudo hostname yourname

eg: sudo hostname Yangk

mac 恢复 launchpad 布局

  • defaults write com.apple.dock ResetLaunchPad -bool true; killall Dock

扩展属性@

xattr -c filename #去除文件的扩展属性@
xattr -c -r * #去除文件夹下所有文件的扩展属性@

nslookup

$ nslookup ec2-54-222-215-38.cn-north-1.compute.amazonaws.com.cn
Server:		192.168.0.1
Address:	192.168.0.1#53

Name:	ec2-54-222-215-38.cn-north-1.compute.amazonaws.com.cn
Address: 54.222.215.38

Date: 2019-09-06 Fri 15:27