WRY

Where Are You?
You are on the brave land,
To experience, to remember...

0%

常用Linux命令

提示

man 是个好东西,学会用man,阅读文档,使用工具更便利!

ChatGPT 更是个好东西!

SSH

1
2
3
4
5
6
7
8
9
10
11
# 安装ssh server
$ apt-get install openssh-server
# 确定服务在运行
$ ps -e | grep ssh
$ systemctl status ssh
# 确保ssh开机启动
$ systemctl enable ssh

# disable clear text password
## set `PasswordAuthentication no` in `/etc/ssh/sshd_config`
## then restart by `systemctl restart sshd.service`

Docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# docker-compose非swarm模式部署docker的时候,使用deploy参数
$ docker-compose --compatibility up -d
# docker 上传镜像
$ docker tag xxx ip/xxx $ docker push ip/xxx
# docker 私有仓库 查看镜像列表
# https://ml.jingtao.fun/v2/_catalog
# 查看某个镜像的tag列表
# https://ml.jingtao.fun/v2/${image_name}/tags/list
# docker 清理无用的资源
$ docker system prune
# 列出所有容器
$ docker ps -a -q
# 列出所有停止的容器, 下面两种方法都可以
$ docker ps -a | grep Exited | awk '{print $1}'
$ docker ps -qf status=exited

docker支持nvidia

Kubectl

1
2
3
4
5
6
7
8
9
10
11
# 查看环境 & 切换环境  环境是指集群、用户和命名空间等概念拼凑出来的
$ kubectl config get-contexts
$ kubectl config use-context ${name}
# 配置多个config文件,kubectl 默认使用的是$HOME/.kube/config文件,但我们可以使用KUBECONFIG将默认文件和其他文件关联到一起,例如
$ export KUBECONFIG=$KUBECONFIG:$HOME/.kube/config:$HOME/.kube/config-exercise/config-refunc
# 查看配置文件情况,多个文件会自动拼在一起
$ kubectl config view
# 查看K8s所有资源
$ kubectl api-resources
# 查看api的版本
$ kubectl api-versions

用户管理

1
2
3
4
5
6
7
8
9
10
# 创建用户
# 不允许登陆的用户 dml_401,创建用户目录为/home/dml_401
$ useradd -s /sbin/nologin -d /home/dml_401 -m dml_401
# 修改属性
$ usermod -s /sbin/nologin dml_401
# 添加组
$ groupadd docker
# 添加用户到组中
$ usermod -aG docker ${user_name} # a 将用户追加到组中,不影响用户原来所在的组
# ps: 用户需要重新登录,更改组的操作才能生效

进程管理

1
2
3
4
# 杀死包含某个命令的进程
$ ps -ef | grep "command" | grep -v grep | awk '{print $2}' | xargs kill -9
# 查看某个进程对应的用户
$ ps aux | grep 18142

IPV6路由配置

1
2
3
4
5
# 查看Ipv6路由表
$ ip -6 route show
# 可以配置好IPV6的网络,命令不是很了解,出现在/etc/network/if-pre-up.d/cloud_inet6文件中
$ IFACE=eth0
$ /sbin/dhclient -6 -v -pf /run/dhclient6.$IFACE.pid -lf /var/lib/dhcp/dhclient6.$IFACE.leases -I -df /var/lib/dhcp/dhclient.$IFACE.leases -nw $IFACE

jupyter

1
2
3
4
5
6
7
# jupyter 管理conda
(base)$ conda install -y jupyter nb_conda
# 添加python解释器到jupyter
(yout-venv)$ pip install jupyter
(yout-venv)$ ipython kernel install --name "local-venv" --user
# jupyter 修改密码
$ jupyter notebook password

virtualenv

1
2
3
4
5
6
# virtualenv 创建虚拟环境
$ virtualenv -p /usr/bin/python3.6 venv3
# python-mysql 库安装
$ env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install MySQL-python
# pip install -r requirement.txt 如何忽略错误
$ cat requirements.txt | xargs -n 1 pip install

conda

1
2
# 创建环境
$ conda create -y -n ${ENV_NAME} python=3.6

python

1
2
3
4
# 添加自定义包路径, 文件位置
# /home/jingtao/anaconda3/envs/trajectory/lib/python3.6/site-packages/mypath.pth
# 文件内容直接输入路径完整名称
# 使用os引入

systemctl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 以frpc服务举例
## 创建文件
$ touch /lib/systemd/system/frpc.service
## 添加如下内容
cat <<EOT >> /lib/systemd/system/frpc.service
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/your/path/frps -c /your/path/frps.ini

[Install]
WantedBy=multi-user.target
EOT
## 启动服务
$ sudo systemctl start frpc.service

DNS

1
2
3
4
5
6
7
8
9
10
11
12
# 临时修改DNS服务, 获得上网修复bug的能力
$ vim /etc/resolv.conf # 添加域名服务器,例如8.8.8.8, 8.8.4.4, 114.114.114.114
# 格式如下:
# nameserver 8.8.4.4
# nameserver 8.8.8.8
# 添加DNS管理工具, 并启动服务
$ apt install resolvconf
$ systemctl start/enable/status resolvconf.service # 启动服务
# 配置永久DNS解析服务器
$ vim /etc/resolvconf/resolv.conf.d/base
# 添加的格式如上 nameserver 8.8.4.4 ,一行一个
$ systemctl restart resolvconf.service # 重启服务

内网机器穿透到公网服务器

1
2
3
4
$ autossh -M xxxx -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R server_ip:server_port:local_ip:local_port server_usrname@server_ip
# -M 公网服务器的监听端口,用于和内网机器通讯,可以不设置,会随机指定
# -fN 后台运行
# -o 设置参数

本地机器穿透到内网环境

1
2
3
4
5
6
# 下面通过本地端口代理内网端口
$ ssh -NL <localport>:<host-ip>:<host-port> xxx &
# 其中host-ip 是指要代理的在内网环境中的IP
# 下面通过socks5代理整个内网环境
$ ssh -ND <local-socks5-port> xxx
# 通过在本地设置socks5端口转发就可以访问实验室内网的资源

git 常用设置

1
2
3
4
5
6
7
8
9
10
11
12
# 添加远程仓库
$ git remote add official ssh://git@git.jingtao.fun:6022/mirror/fission.git
# 拉取远程分支到本地,并在本地重新命名分支
$ git fetch official master
$ git checkout -b ofi-master official/master
# 上述操作可以用作fork操作之后和官方仓库进行合并
# 将本地分支a推送到远程b
$ git push origin a:b
# git 命令行不显示中文
$ git config --global core.quotepath false
# 回到上一个节点
$ git checkout HEAD~ # or git checkout HEAD^1

硬件信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看CPU的核心数、频率等
$ cat /proc/cpuinfo
# 过滤频率信息
$ cat /proc/cpuinfo | grep MHz | uniq
# 查看内存情况
$ cat /proc/meminfo
# 查看内存的硬件的信息
$ sudo dmidecode -t memory
# 查看网卡频率
$ ethtool eno1
# 检测固态硬盘
$ apt-get install nvme-cli
$ nvme list
$ nvme smart-log /dev/nvme0

磁盘管理

缩小磁盘分区

可以自动缩小分区的管理工具

查看 & 磁盘信息

1
2
3
4
5
6
# 查看挂载的磁盘设备ID
$ blkid
# 修改硬盘分区表格式
$ parted
# 修改磁盘分区
$ fdisk /dev/xxx