远程服务器简略指南




远程登录

Linux的远程登录使用SSH

  • Windows 连 SSH 用 MobaXterm,可直接拖文件传到服务器,保持远程连接:Settings→勾选SSH keepalive

MobaXterm

在这里插入图片描述

PS:若是内网,需要先连VPN

建议:




日期时间日历

日期时间:date

日历:cal




快捷键

  • 补全 / 显示所有命令Tab 或两次 Tab
  • 中断目前程序Ctrl + C
  • 离开命令行Ctrl + D
  • 前一个单词Alt + B
  • 后一个单词Alt + F
  • 删除一个单词Ctrl + W
  • 删除光标前所有Ctrl + U
  • 删除光标后所有Ctrl + K
  • 删除光标前的单词Ctrl + W
  • 光标移动到行开头Ctrl + A(同 Home
  • 光标移动到行结尾Ctrl + E(同 End
  • 反向增量搜索历史Ctrl + R
  • 反向非增量搜索历史Alt + P




帮助文档

命令的帮助文档:date --help

命令的使用说明:man date

第一行 DATE(1) 的 1 代表一般用户可使用的命令。5 代表配置文件。8 代表系统管理员可用的命令。

按下 / 可搜索字符串,n 为下一个,N 为上一个

命令的分页说明:info date




文件权限

列出所有文件及其权限:ls -al

-rwxrw-r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg

- ↑ 文件类型 rwx ↑ 拥有者权限 rw- ↑ 用户组权限 r - - ↑ 其他人权限 1 ↑ 链接数 root ↑ 文件拥有者 root ↑ 文件用户组 1864 ↑ 文件大小 May 4 18:01 ↑ 文件最后修改时间 initial-setup-ks.cfg ↑ 文件名 \stackrel{\text{文件类型}}{\overset{\uparrow}{\text{-}}} \quad \stackrel{\text{拥有者权限}}{\overset{\uparrow}{\text{rwx}}} \quad \stackrel{\text{用户组权限}}{\overset{\uparrow}{\text{rw-}}} \quad \stackrel{\text{其他人权限}}{\overset{\uparrow}{\text{r - -}}} \quad \stackrel{\text{链接数}}{\overset{\uparrow}{\text{1}}} \quad \stackrel{\text{文件拥有者}}{\overset{\uparrow}{\text{root}}} \quad \stackrel{\text{文件用户组}}{\overset{\uparrow}{\text{root}}} \quad \stackrel{\text{文件大小}}{\overset{\uparrow}{\text{1864}}} \quad \stackrel{\text{文件最后修改时间}}{\overset{\uparrow}{\text{May 4 18:01}}} \quad \stackrel{\text{文件名}}{\overset{\uparrow}{\text{initial-setup-ks.cfg}}} -文件类型rwx拥有者权限rw-用户组权限r - -其他人权限1链接数root文件拥有者root文件用户组1864文件大小May 4 18:01文件最后修改时间initial-setup-ks.cfg文件名

第一个字符为文件类型

  • -:文件
  • d:目录
  • l:链接文件

权限字符每三个为一组,分别为拥有者权限(owner)、用户组权限(group)、其他人权限(others)

  • r:可读(read)
  • w:可写(write)
  • x:可执行(execute)

修改用户组:chgrp

修改拥有者:chown

修改文件权限:chmod

递归修改文件夹权限到最大

chmod -R 777 xxx

赋予用户某文件夹读写执行权限

chmod -R 0744 xxx  # 用户有读写执行权限,组和其他用户只有读权限

setfacl -R -m u:某用户:rwx 某路径




看到156

















pip使用镜像

清华或豆瓣镜像

pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install xxx -i https://pypi.doubanio.com/simple/

装不上的话可以试试加参数 --user




TensorFlow

  1. 查看 CUDA 和 cuDNN
    cat /usr/local/cuda/version.txt
    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
  2. pip 安装 tensorflow-gpu
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==1.4 --user
  3. 测试代码
import tensorflow as tf

a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))  # 看使用的是CPU还是GPU
a: (Const): /job:localhost/replica:0/task:0/device:GPU:0
b: (Const): /job:localhost/replica:0/task:0/device:GPU:0
[[22. 28.]
 [49. 64.]]
  1. 查看 GPU 使用情况 nvidia-smi




Python含中文无法运行

程序首行加上

# -*- coding: utf-8 -*-




压缩解压

ZIP

压缩:zip -r mydata.zip mydata

解压:unzip -o -d ./ file.zip

压缩多个文件:zip test.zip a b c

压缩所有mp4文件:zip -r a.zip *.mp4

TAR

打包:tar -zcvf a.tar a.txt

解压:tar -xvf a.tar

查看文件名:tar -tvf a.tar

删除文件(先解压再打包):tar -zxvf file.tar.gz --exclude "file_to_exclude"




安装Jupyter notebook

安装火狐浏览器

yum install firefox

安装Jupyter notebook

pip install jupyter

pip install jupyter_contrib_nbextensions

jupyter contrib nbextension install --user

pip install yapf

进入 jupyter notebook 后发现Nbextensions

  • Code prettify:代码格式化
  • Collapsible Headings:折叠Headings区域
  • ScrollDown:输出过长时,自动下拉滚动条
  • Table of Contents (2):根据Markdown的标题栏自动生成目录
  • Codefolding:折叠代码块




Git

  1. 安装Git yum install git

  2. 查看版本 git --version

  3. 生成SSH密钥:ssh-keygen -t rsa -C 你的邮箱 →回车→打开id_rsa.pub→添加到GitLab的SSH Keys中

  4. 克隆项目 git clone xxx.git

PS:如果GitLab是内网自建的话,外网要操作的话要映射到外网




后台启动脚本nohup

后台启动:nohup 具体命令 &

输出默认保存到nohup.out:nohup python3 -u xxx.py &

保存输出:nohup python3 -u xxx.py > /tmp/test.log &

后台启动脚本命令nohup返回pid

显示当前终端任务:jobs

结束进程:kill 某pid

强制结束进程:kill -9 某pid

查看进程:ps -ef | grep python

丢弃所有输出:nohup python main.py 2>&1 >/dev/null &(将标准错误输出重定向到标准输出,然后将标准输出重定向到 /dev/null,这样就会丢弃所有的输出,既不会显示在终端上,也不会保存到文件中。这通常用于在执行命令时忽略不需要的输出或错误信息。)




前端报错net::ERR_CONNECTION_REFUSED

http://localhost:8080 改成 http://本机IP:8080




下载上传文件

下载文件:sz xxx → 右键 → Receive file using Z-modem

上传文件:rz xxx → 右键 → Send file using Z-modem

下载文件夹可通过先压缩后下载的方式实现

sz 很慢,推荐用 scp 或 rsync

推荐阅读

  1. scp如何跨过中转主机直接传输文件?

还可以通过 Windows PowerShell 上传

cd 要上传的文件的目录
sftp 用户名@host
cd 要存放的目录
put 某文件

有可能设置了用户的磁盘限额很小,导致上传的文件特别小,这时候需要问运维有没有比较大的公共目录




MobaXterm 快捷键

Settings → Keyboard shortcuts


打开右键功能:Settings → Terminal → 取消勾选【Paste using right-click】




Windows 与 Linux 路径兼容

Windows 与 Mac 和 Linux 的路径有区别:

  • Windows 的路径:./data/pictures/
  • Mac 和 Linux 的路径:/data/pictures/

Windows:./data/a.txt

Linux:/data/a.txt

判断系统

import platform

platform_system = platform.system()

if platform.system() == 'Windows':
    print('Windows')
elif platform.system() == 'Linux':
    print('Linux')
else:
    print('Others')

详细阅读:Python os.path.join() 拼接路径少了一部分的坑




杀进程

查询自己开的进程:ps u

强制杀进程:kill -9 pid




查看日志

动态查看:tail -f log

查看末尾一百行:tail -n 100 log

过滤错误并查看其前后5行:cat log | grep -A 5 -B 5 ERROR

显示行号:cat -n log

从后往前翻:less log

取第11到20行:head -n 20 log| tail -n 10

取第11到20行并显示行号:cat -n log | head -n 20| tail -n 10

less abc.log
# 常用命令
G :移动到最后一行
 
g :移动到第一行
 
b:向上翻一页
 
按空格:向下翻一页
 
u:向上翻半页
 
d:向下翻半页
 
q: 退出 less 命令




查看磁盘空间

df -h




查看磁盘配额

quota -uvs user1




查看文件数量和大小

查看文件数量

ls | wc -w  # 文件和文件夹数量
ls -l | grep "^-" | wc -l  # 当前文件夹下的文件数量
ls -lR| grep "^-" | wc -l  # 包括子目录的所有文件数

查看文件夹大小

du -sh  # 当前文件夹大小
du -sh models  # 指定文件夹大小

查看文件大小

ls -lh xxx




修改登陆目录

vi ~/.bashrc

添加 cd xxx




包含字符串的文件

含特殊字符,将反单引号 ` 替换为 \` ,其余用三引号包起来

find . | xargs grep -ri "123" -l

find . | xargs grep -ri """SELECT \`t1\`.\`id\`, \`t1\`.\`father_key\`, \`t1\`.\`key\`, \`t1\`.\`path\`, \`t1\`.\`cls\`, \`t1\`.\`root_category_id\`, \`t1\`.\`team_id\`, \`t1\`.\`order\`, \`t1\`.\`custom_key\`, \`t1\`.\`name\`, \`t1\`.\`desc\`, \`t1\`.\`create_at\`, \`t1\`.\`update_at\`, \`t1\`.\`delete_at\`, \`t1\`.\`file_md5\`, \`t1\`.\`zj_std_key\` FROM \`category_v3\` AS t1 WHERE (((\`t1\`.\`team_id\` = %s) AND (\`t1\`.\`path\` = %s)) AND ((\`t1\`.\`delete_at\` = %s) OR (\`t1\`.\`delete_at\` IS %s)))""" -l

find . -name "*.log" | xargs grep -ri "123" -l

find . -name "*.log" | xargs grep -ri """a""" -l

遇到的坑:

  1. grep: Invalid range end
    内容含-




删除、移动、复制

复制文件夹

cp -r /a /b

删除文件夹

rm -r a/b




基本信息

查看操作系统发行版本

$ cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)

查看内核版本

$ uname -srm
Linux 3.10.0-693.el7.x86_64 x86_64




常用软件

安装vim

sudo apt-get install vim-gtk

美化vim

sudo vim /etc/vim/vimrc

最后一行输入 → Esc → 保存并退出:wq

set nu
set tabstop=4
set cursorline
set ruler
set autoindent
set nobackup

效果如图
在这里插入图片描述




安装环境

sudo apt update
sudo apt install python3
sudo apt install python3-pip

设置清华源

sudo mkdir ~/.pip
sudo vim ~/.pip/pip.conf

输入

[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com




虚拟环境

创建虚拟环境并切换

python3 -m venv ./venv
source ./venv/bin/activate

创建独立的Python环境

sudo apt-get install python-virtualenv
virtualenv -p /opt/xxx/python3.6.4 python3.6.4
source /python3.6.4/bin/activate

退出环境

deactivate




命令行界面

进入命令行界面:Ctrl+Alt+F3

返回图形界面:Ctrl+Alt+F1

不行的话试试 F1 - F6




系统命令

  1. history:查看历史命令
  2. !序号:执行历史命令,-1为倒数第一条
  3. 命令名 --help:查看命令帮助
  4. wget:下载文件
  5. pwd:当前路径,相当于 cd ~ 的路径
  6. cp a b:复制 a 到 b
  7. mv a b:复制 a 到 b




统计出现次数

grep -o 关键词 文件名 | wc -l




查看安装包的大小

sudo apt-get install xxx,安装的时候会确认,查看安装 xxx 后占用的空间大小,安装后再查比较麻烦




查看安装过的软件

dpkg -l | grep xxx




卸载软件

卸载软件及其配置

sudo apt-get --purge remove xxx

卸载软件及其依赖的安装包

sudo apt-get autoremove xxx




下载软件

sudo dpkg -r xxx




清空屏幕和输入

清空屏幕:Ctrl + Lclear

清空输入:Ctrl + U




历史命令

查看历史:history

搜索历史:Ctrl + R

重复执行第 N 条命令:!n

查看所有历史:sudo cat ~/.bash_history




查看 IP

ifconfig -a
ip address




用户及其权限

切换用户

su xxx

查看所有用户及其权限

cat /etc/passwd

是否有 sudo 权限

sudo -l
groups  # 查看是否在sudo组里
groups 用户名  # 查看是否在sudo组里




查看架构

dpkg --print-architecture




查看CPU占用

top

top -p pid

strace -p pid  # 跟踪系统调用和信号

netstat -p | grep pid  # 查看网络连接

查看完整用户名:按下大写 X,输入 5,回车




查看内存占用

free -m
free -tm  # 内存总和、MB形式
free -tms 5  # 内存总和、MB形式、每5秒更新
free -g  # 内存总和、GB形式




黑客帝国

sudo apt install cmatrix
cmatrix




swp已存在

rm -rf .xxx.swp




查看端口占用情况

ss -nlp | grep 某端口

kill -9 $(lsof -i tcp:进程号 -t)




切换用户

su - root  # 切换到root身份




pip指向pip3

sudo ln -s /usr/bin/pip3 /usr/bin/pip
sudo ln -s /usr/bin/python3 /usr/bin/python




用户组

groups root  # 查看某用户在哪个组里
usermod -a -G groupA user  # 将用户添加到组里




修改密码

Warning: your password will expire in 4 days

chage --list user1  # 列出密码过期情况

chage -I -1 -m 0 -M 99999 -E -1 user1  # 改为永久不过期

或修改密码

passwd




查找文件

find . -name "*.c"

# 当前目录下查找
find . -name ""

# 系统目录下查找
find / -name ""




查看文件MD5

Windows

certutil -hashfile a.txt MD5

Linux

md5sum a.txt




查看IP端口是否通

telnet <IP地址> <端口号>




查看配置

CPU:

  • 型号:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
  • 核数、线程数:lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
  • 频率:cat /proc/cpuinfo |grep MHz|uniq

内存:

  • 大小:free -g
  • 频率:sudo dmidecode -t memory

显卡:

  • 英伟达型号:nvidia-smi
  • AMD型号:radeontop

硬盘:

  • 大小:df -h
  • 写入速度:dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct && sync; rm testfile




守护进程

守护进程(daemon):在后台运行、独立于用户进程且通常在系统启动时启动的一种特殊的进程。常用于执行系统级任务、服务和周期性作业。

第一次fork:父进程创建子进程后退出,这时子进程不再接收终端信号。

第二次fork:子进程创建孙进程后退出,这时孙进程不会重新申请控制终端,成为了守护进程。

常见的终端信号:

  • SIGINT (2):中断信号,通常由用户在终端按下 Ctrl + C 触发,用于中止当前进程。
  • SIGKILL (9):强制终止信号。不能被捕获、阻塞或忽略,立即终止目标进程。
  • SIGTERM (15):终止信号。用于请求进程正常终止,进程可以捕获这个信号并进行相应的清理操作后退出。
  • SIGHUP (1):挂起信号。通常在终端关闭时发送给守护进程,通知进程重新初始化。
  • SIGSTOP (17):停止信号。用于暂停目标进程的执行,但可以使用 SIGCONT 恢复。
  • SIGCONT (18):继续执行信号。用于让已经暂停的进程继续执行。
  • SIGTERM (15):中止信号。通常由系统管理员发出,用于请求进程优雅退出。
  • SIGCHLD (20):子进程终止信号。当一个子进程终止或停止时向其父进程发送。




判断后端接口走的是内网还是公网

import socket

socket.gethostbyname("test-cloud.stomics.tech")
ping test-cloud.stomics.tech




遇到的坑

1. 使用 grep 报错 grep: warning: GREP_OPTIONS is deprecated; please use an alias or script

unset GREP_OPTIONS




参考文献

  1. SSH原理与运用(一):远程登录
  2. Python pip使用国内镜像安装第三方库:命令行或Pycharm
  3. 从GitLab clone项目到本地
  4. permission denied (publickey)的解决方法
  5. linux-root用户可以git clone,但普通用户就不能git clone
  6. Linux网络状态工具ss命令使用详解
  7. MobaXterm技巧
  8. Mobaxterm 安装lrzsz插件?
  9. MobaXterm Documentation
  10. Linux下载文件夹下所有文件
  11. MobaXterm设置复制、粘贴等快捷键
  12. Grep: show lines before and after the match in Linux
  13. Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹
  14. grep 过滤关键字不显示过滤命令本本身
  15. python工程师最常用的linux操作命令总结
  16. Rasa Installation
  17. Linux wget命令详解
  18. Linux环境下virtualenv安装和使用
  19. Pyppeteer从0开始学习记录
  20. ubuntu18安装python3, pip3并配置国内源
  21. Linux上传下载文件的几种方式
  22. Linux scp命令
  23. How to SCP from linux server to Windows client
  24. Linux 统计某个字符串出现的次数
  25. Linux用户及权限管理
  26. 15 個有趣好玩的linux shell 命令
  27. su、sudo、su - root的区别
  28. linux杀死占用某端口的所有进程
  29. How to set user password expirations on Linux
  30. Your password will expire in 15 days, how to disable it or set new expire date
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XerCis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值