查看与查找
- 系统、内核相关的信息
cat /etc/os-release
,sudo lsb_release -a
uname --all
env
export
- 查看硬件
- 逻辑cpu核数:
cat /proc/cpuinfo | grep "processor" |wc -l
- 物理cpu核数:
cat /proc/cpuinfo | grep "physical id" | sort | uniq|wc -l
- 显卡实时数据:(每0.2s刷新) $
- 逻辑cpu核数:
- 文件查找
whereis pkg
sudo find / -name "*.txt"
- $
有约束的全局查找:除了
/sys/
(-xdev)和子目录/mnt/
外。
文件、存储相关
- 查看存储大小:
- 当前系统磁盘的:
- 所处目录的:
- 文件的常用操作:
- 切割文件:
split -b 1G -d --additional-suffix=.txt target_file
- 压缩文件:
tar -zcvf file.tar.gz file
- 解压缩文件:
tar -zxvf file.tar.gz
- 切割文件:
将终端内容存入日志
使用
>
重定向:your_command > output.log 2>&1
使用
tee
命令:your_command | tee output.log
输出同时发送到标准输出和指定的文件中。经测试好像并没有。后台记录日志:使用
script -f session.log
想退出就用exit
备注:执行
less -r ~/....log
可查看正确渲染出终端控制字符
的日志文件。
用户、权限等
切换用户switch user:
sudo su [username]
以user1身份执行命令:
sudo -u user1 command
.sh脚本的执行方法的对比:
bash test.sh
:启动一个新的Bash子shell
来执行test.sh中的命令。它与你当前终端的shell是隔离的。sudo bash test.sh
:子shell的操作者是用户root
,不是当前shell的用户。否则添加- E
参数。source test.sh
或. test.sh
:直接在当前shell
执行。
用户免密使用sudo:
打开sudoers文件:sudo vim /etc/sudoers
;
在类似%sudo ALL=(ALL:ALL) ALL
的行下添加一行:yourUserName ALL=(ALL:ALL) NOPASSWD: ALL
;
保存并退出。查看所有用户信息:
cat /etc/passwd
用户与组
- 查看当前用户属于哪些组:
groups
, 或id -nG
- 查看一个组中有哪些用户:
getent group <group_name>
- 查看所有用户组:
cat /etc/group
\ - 查看用户的所有:
id
- 查看当前用户属于哪些组:
进线程、缓存相关
- 实时进程:
top; htop
- 查看所有进程:
ps aux
;ps [-ef]
- 杀死进程:
kill -9 [pid]
,killall -9 [pname]
sudo pkill -f {string}
# 杀死所有包含指定字符串的进程
- 清除系统缓存(1可换成2,3):
sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"
- 进程的后台前台:
- 把占用命令行的进程改到后台挂起:ctrl+ Z
- 进程在前台后台切换:
fg [pid]
;bg [pid]
- 查看后台进程列表:
jobs
- 把后台挂起的程序,在后台运行起来:
bg
- 把后台运行的程序调用至前台:
fg
- 直接后台执行命令:
command &
,nohup command
,nohup command &
,nohup command > /dev/null 2>&1 &
系统服务
- 查看当前系统的所有服务:
systemctl list-unit-files --type service
,list-unit-files
也可改成list-units
. - 开/关/重启/查看一个服务:
sudo systemctl start/stop/restart/status 软件名
- 功能同上(service是一个比较旧的服务管理命令):
sudo service docker stop
- 将服务设为开机自启:
sudo systemctl enable my-service
- 自定义服务:
- 创建一个新的服务单元文件,比如
/etc/systemd/system/my-service.service
。 - 编辑该文件,指定服务的配置,例如:
[Unit]
Description=My Custom Service
After=network.target
[Service]
ExecStart=/path/to/your/command
Restart=always
[Install]
WantedBy=multi-user.target
- 创建一个新的服务单元文件,比如
安全相关
- 生成密钥对:
网络连接相关
ssh的端口转发功能
本地端口转发(
LPF
): 将本地机器的某个端口
上的流量通过 SSH 隧道转发到远程机器的某个地址和端口
。- 语法:
ssh -L [本地端口]:[目标地址]:[目标端口] [用户名@远程主机]
- 用途: 在本地访问远程服务器上的服务,就像服务运行在本地一样。因此远程机器的相应端口就不必暴露在互联网上, 非常安全.
- 精辟总结: 能安全访问别人的非公开服务!
- 语法:
远程端口转发(
RFP
): 将远程机器的某个端口
上的流量通过 SSH 隧道转发到本地机器的某个地址和端口
。- 语法:
ssh -R [远程端口]:[本地地址]:[本地端口] [用户名@远程主机]
- 用途: 把本地的端口暴露给了远程机器, 如果远程机器有公网IP, 那就暴露给了互联网, 这就是🚀
内网穿透
🚀 - 精辟总结: 能把防火墙后的自己暴露出去!
- 语法:
动态端口转发(
DPF
): 在本地创建一个SOCKS 代理服务器
,本地所有的网络请求都会经该代理服务器通过 SSH 隧道到达远程服务器,再由远程服务器进行数据转发。与 -L 和 -R 明显不同,-D 没有将流量定向到一个特定的远程接口!
- 语法:
ssh -D [本地端口] [用户名@远程主机]
- 用途:
- 保护流量安全;
- 访问被
本地网关
的防火墙或网络限制的网站, 这就是🚀代理
🚀
精辟中介: 能突破防火墙随意访问!
- 语法:
远程连接、端口、IP等
- 解析域名:
nslookup taddream.site
或ping
- 看端口占用:
netstat -ltunp
IP查找
- windows内:用
ipconfig
注意: 列表中第一个IP值是本机IP;其他的比如
vEthernet
和vEthernet(WSL)
下的IP是本机构建相应虚拟内网
时的网关IP。 - linux内:
- 查看完整信息:执行
ifconfig
,或ip a
- 获取具体IP值:
- 自身ip值:是
ifconfig
命令的输出中的 ‘eth0’ 的IP,或执行hostname -I | awk '{print $1}'
注:若该Linux是服务器,则IP可能是动态的;若它是WSL2或容器,则IP一定是动态的。
- 宿主ip值:
可在宿主机里面执行ifconfig
/ipconfig
, 其输出中的‘vthernet(WSL)’下的IP就是了, 注意只能在‘vthernet(WSL)’适配器中找, 不能在‘其他适配器’中找。
或查看本机的nameserver:cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'
。注:只有WSL或容器等虚拟主机才有’查看宿主IP’的情况。
注: 一般情况下, wsl或容器的nameserver == 宿主机的‘vthernet(WSL)’适配器下的IP; 如果不等, 以后者为准.
注:wsl下的容器:- 其宿主IP是Windowswsl的宿主机的‘ethernet(WSL)’下的IP,千万千万不是wsl的哦。
- 其网关IP却在wsl中。
- 自身ip值:是
- 查看完整信息:执行
文件传输
- 本地目录传到远端:
scp -r /local/dir user@remote_ip:/remote/dir
软件包相关
多用sudo apt
, 少用apt-get
- 搜索一个包:
apt-cache search cudnn