Linux-Note
Table of Contents
- top命令
- linux 查看终端是bash,还是zsh
- 下载b站视频-高清
- 查看本机ip
- iTerm2 app 关闭右侧滑动条
- traceroute
- ufw
- nginx尾斜杠的坑
- Q:macOS Sonoma新增了一个功能——屏幕上的大写锁定指示器。有没有办法禁用它?
- journalctl日志
- 查看用户
- nmap
- Linux 关闭/开启密码登录(仅证书登录)
- ssh生成公私钥:
- ssh连接长时间不断开
- bashrc 里 alias 加参数如何做?
- ss-server
- ssh timeout
- chmod,chown,chgrp
- 文件分割/合并
- tcpdump
- less 乱码
- 修改主机名
- 建用户并赋予 sudo 权限
- 禁用 ping
- netstat
- find命令
- mac osx 终端批量删除文件
- 查找并杀死 tomcat
- ls 命令
- du / df 命令
- mac 网关和路由
- 杀掉查询出来的进程
- pbcopy
- arp -a
- 软连接
- mac ox 终端显示 bogon 的问题
- mac 恢复 launchpad 布局
- 扩展属性@
- nslookup
top命令
top - 11:36:14 up 634 days, 20:57, 4 users, load average: 0.42, 0.46, 0.50 Tasks: 135 total, 1 running, 134 sleeping, 0 stopped, 0 zombie %Cpu(s): 13.9 us, 0.6 sy, 0.2 ni, 85.3 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 15992076 total, 4754876 free, 3735156 used, 7502044 buff/cache KiB Swap: 0 total, 0 free, 0 used. 11840112 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 18347 tomcat 20 0 7958108 1.837g 17108 S 47.2 12.0 15:05.22 java 31937 root 10 -10 153328 23968 10456 S 1.0 0.1 1186:51 AliYunDunMonito 9381 root 20 0 32.657g 49144 19472 S 0.7 0.3 993:09.77 chrome 25847 root 20 0 4286188 413964 14200 S 0.7 2.6 456:50.72 java
以下是对这段输出内容的解释:
一、系统整体状态
- `top - 11:36:14 up 634 days, 20:57, 4 users, load average: 0.42, 0.46, 0.50`:
- 显示当前时间是 11:36:14。
- 系统已经运行了 634 天 20 小时 57 分钟。
- 目前有 4 个用户登录到系统。
- 系统负载平均值分别为最近 1 分钟、5 分钟和 15 分钟的负载情况,这里分别是 0.42、0.46 和 0.50。负载平均值表示系统在一段时间内的平均任务队列长度,数值越高表示系统负载越重。
二、任务状态
- `Tasks: 135 total, 1 running, 134 sleeping, 0 stopped, 0 zombie`:
- 系统中总共有 135 个任务。
- 其中 1 个任务正在运行。
- 134 个任务处于睡眠状态(等待事件发生)。
- 0 个任务已停止。
- 0 个任务处于僵尸状态(已结束但父进程未回收资源)。
三、CPU 使用情况
- `%Cpu(s): 13.9 us, 0.6 sy, 0.2 ni, 85.3 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st`:
- `us`:用户空间占用 CPU 的百分比为 13.9%。表示用户进程所占用的 CPU 时间比例。
- `sy`:内核空间占用 CPU 的百分比为 0.6%。表示系统内核进程所占用的 CPU 时间比例。
- `ni`:低优先级用户进程占用 CPU 的百分比为 0.2%。表示调整过优先级的用户进程所占用的 CPU 时间比例。
- `id`:空闲状态的 CPU 百分比为 85.3%。表示 CPU 处于空闲状态,没有任何任务在运行的时间比例。
- `wa`:等待 I/O 完成所占用 CPU 的百分比为 0.1%。表示由于等待输入/输出操作完成而导致的 CPU 空闲时间比例。
- `hi`:硬件中断占用 CPU 的百分比为 0.0%。表示硬件中断处理所占用的 CPU 时间比例。
- `si`:软件中断占用 CPU 的百分比为 0.0%。表示软件中断处理所占用的 CPU 时间比例。
- `st`:被虚拟化管理程序(如 KVM)偷走的 CPU 时间百分比为 0.0%。表示在虚拟化环境中,虚拟机监控程序占用的 CPU 时间比例。
四、内存使用情况
- `KiB Mem : 15992076 total, 4754876 free, 3735156 used, 7502044 buff/cache`:
- 系统总内存为 15992076 KiB(千字节)。
- 目前有 4754876 KiB 内存空闲。
- 已使用的内存为 3735156 KiB。
- 用于缓冲区(buff)和缓存(cache)的内存为 7502044 KiB。缓冲区和缓存可以提高系统的 I/O 性能,当内存不足时,它们可以被释放供其他进程使用。
- `KiB Swap: 0 total, 0 free, 0 used. 11840112 avail Mem`:
- 交换分区总大小为 0 KiB。
- 目前交换分区空闲大小为 0 KiB。
- 已使用的交换分区大小为 0 KiB。
- 可用内存大小为 11840112 KiB。
五、进程列表
- `PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND`:
- `PID`:进程 ID。
- `USER`:进程所有者的用户名。
- `PR`:进程优先级。
- `NI`:进程的 nice 值,用于调整进程的优先级。
- `VIRT`:进程使用的虚拟内存大小(以 KiB 为单位)。
- `RES`:进程使用的物理内存大小(以 KiB 为单位)。
- `SHR`:进程共享内存大小(以 KiB 为单位)。
- `S`:进程状态,如 `R`(运行中)、`S`(睡眠中)、`Z`(僵尸状态)等。
- `%CPU`:进程占用 CPU 的百分比。
- `%MEM`:进程占用内存的百分比。
- `TIME+`:进程累计使用的 CPU 时间。
- `COMMAND`:启动进程的命令名称。
例如:
- `18347 tomcat 20 0 7958108 1.837g 17108 S 47.2 12.0 15:05.22 java`:表示进程 ID 为 18347,所有者是 `tomcat` 用户,优先级为 20,nice 值为 0,使用虚拟内存 7958108 KiB,物理内存 1.837GB(1.837g 表示 1.837 * 1024 * 1024 KiB),共享内存 17108 KiB,状态为睡眠中(S),占用 CPU 47.2%,占用内存 12.0%,累计使用 CPU 时间为 15 分钟 5.22 秒,启动命令为 `java`。
linux 查看终端是bash,还是zsh
- echo $SHELL
下载b站视频-高清
- annie高清
- 下载annie brew install annie
- annie -c bilicookie.txt -f {{url}}
- annie -c bilicookie.txt -f 80 {{url}}
- bilicookie.txt 存放的是登录b站的cookie
- -f 查看可以下载的清晰度,若无cookie,最高可以下载的清晰度只有480P
查看本机ip
# 公网ip curl ifconfig.me # 本机ip ifconfig # 或者 hostname -I
iTerm2 app 关闭右侧滑动条
- 打开 iTerm2。
- 进入 Preferences(偏好设置),可以通过菜单栏中的 iTerm2 → Preferences,或者使用快捷键 `Command` + `,`。
- 在 Preferences 窗口中,选择 Appearance(外观)标签页。
- 在 Appearance 下的 Window 区域,找到滚动条相关的设置。
- 取消勾选 “Show scrollbars”(显示滚动条)选项。
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)
说明:
- 生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys
- 某个机器生成自己的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
- https://blog.csdn.net/zhouleiblog/article/details/9325913
- chmod #更改文件权限(rwx)
- 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 权限
- https://www.cnblogs.com/leeyongbard/p/9513960.html
- https://www.linuxidc.com/Linux/2016-12/139018.htm
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
find命令
find . -type f -name "*.jpg" -exec mv {} ../jpg/ \;
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