Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

Linux命令手册

2021/11/08 Linux
Word count: 3,649 | Reading time: 16min

scp

1、从服务器上下载文件

1
scp username@servername:/path/filename /var/www/local_dir(本地目录)

例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)

2、上传本地文件到服务器

1
scp /path/filename username@servername:/path

例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中

3、从服务器下载整个目录

1
scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)

例如:scp -r root@192.168.0.101:/var/www/test /var/www/

4、上传目录到服务器

1
scp  -r local_dir username@servername:remote_dir例如:scp -r test  root@192.168.0.101:/var/www/   把当前目录下的test目录上传到服务器的/var/www/ 目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ ssh root@47.98.233.15
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:8hgJ8jpcBr1tm6HS72FpXwMrjba8MQqlqYJQLPB/Qf4.
Please contact your system administrator.
Add correct host key in /Users/wangdong/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/wangdong/.ssh/known_hosts:26
ECDSA host key for 47.98.233.15 has changed and you have requested strict checking.
Host key verification failed.
# 从网上截的,自己电脑报错没报错
按报错的提示,需要将C:\Users\10630\.ssh中的known_hosts中的内容删掉,因为他默认先从这里边找相同IP的,删掉后就行了

ssh

SSH分客户端openssh-client和服务器端openssh-server,如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server

下面讲解openssh-server

  1. 首先更新源

    1
    sudo apt-get update
  2. 安装ssh服务

    1
    sudo apt-get install openssh-server
  3. 检测是否已启动

    1
    ps -e | grep ssh

    看到有ssh字样,说明已启动,如果没有就手动启动

    1
    /etc/init.d/ssh start
  4. 配置ssh-server,配置文件位于/etc/ssh/sshd_config,默认端口为22,为了安全,一般自定义为其他端口,然后重启

    1
    sudo /etc/init.d/ssh resart

增加桌面快捷方式

Launcher :
​ 在/usr/share/applications/中写入Roboviz.desktop文件(sudo vim Roboviz.desktop)

1
2
3
4
5
6
7
8
9
[Desktop Entry]
Name=Roboviz
Comment=Roboviz
Exec=/home/apollo3d/RoboViz-dev/bin/linux-amd64/roboviz.sh
Icon=/home/apollo3d/RoboViz-dev/bin/linux-amd64/resources/images/icon.png
Terminal=true
StartupNotify=true
Type=Application
Categories=Development;IDE;

ps aux | grep进程名
ps -A 显示所有程序。
ps e 列出程序时,显示每个程序所使用的环境变量。
kill -9 324
killall -9 NAME Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号
chmod {u|g|o|a}{+|-|=}{r|w|x} filename 修改权限
find pathname [option] expression 寻找文件
grep [option] pattern filenames 搜索文件中匹配符
​ grep -r 二进制 /home/apollo3d/Documents
./文件名 进入到进程的执行文件所在的路径下,执行文件

https://www.cnblogs.com/lcword/p/6046261.html

端口操作

端口监听信息 netstat -plant
一、查看哪些端口被打开 netstat -anp

二、关闭端口号:iptables -A OUTPUT -p tcp --dport 端口号 -j DROP

三、打开端口号:iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT

四、以下是linux打开端口命令的使用方法。

nc -lp 23 &(打开23端口,即telnet)
  
netstat -an | grep 23 (查看是否打开23端口) 或者 lsof -i:80

五、linux打开端口命令每一个打开的端口,都需要有相应的监听程序才可以

创建新用户

在 root 用户下运行这条命令创建一个新用户,yangxg 是用户名

因为我叫杨学光,所以我取的用户名是 yangxg

选择一个你喜欢的用户名,不一定非得和我的相同

root@localhost:~# useradd -m -s /bin/bash yangxg

把新创建的用户加入超级权限组

root@localhost:~# usermod -a -G sudo yangxg

为新用户设置密码

注意在输密码的时候不会有字符显示,不要以为键盘坏了,正常输入即可

root@localhost:~# passwd yangxg

切换到创建的新用户

root@localhost:~# su - yangxg

切换成功,@符号前面已经是新用户名而不是 root 了

yangxg@localhost:~$

为root用户提供初始密码

sudo passwd root

修改为阿里云 DNS

  1. 您必须是管理员root或者具有管理员权限

  2. sudo vim /etc/resolv.conf

  3. 加入:

    1
    2
    nameserver 223.5.5.5
    nameserver 223.6.6.6
  4. 保存退出,然后使用dig 验证:

  5. dig www.taobao.com +short若出现结果则表示正常。

换源(更换数据源)

1
2
3
4
5
rootdubuntu:/home/lusifer# curl -sSL https://get. daocloud. io/docker | sh

Executing docker install script, commit:1d31602
+sh-c apt-get update-qq>/dev/null E: Could not get Lock /var/lib/apt/lists/lock-open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

原因可能是没有更新数据源

1.备份默认的源sudo cp /etc/apt/sources.list /etc/apt/sources_init.list

2.用你熟悉的编辑器打开:如vim /etc/apt/sources.list替换默认的http://archive.ubuntu.com/mirrors.aliyun.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main

deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

最后输入sudo apt-get update

Ubuntu无法找到add-apt-repository问题的解决方法

网上查了一下资料,原来是需要python-software-propertiduanjkes

于是apt-get install python-software-properties

除此之外还要安装software-properties-common

于是apt-get install software-properties-common

然后就能用add-apt-repository了


代理

搜索代理

env | grep proxysudo grep -r -i http_proxy=代理地址

配置代理

临时:export http_proxy=http://10.3.0.1:80

(1) 需要在/etc/apt/apt.conf中添加以下代码: (如果您希望apt-get(而不是其他应用程序)一直使用http代理,您可以使用这种方式。)

Acquire::http::proxy "http://用户名:密码@地址:端口";

Acquire::ftp::proxy "http://用户名:密码@地址:端口";

Acquire::https::proxy "http://用户名:密码@地址:端口";

保存apt.conf文件。

(2)新建一个代理配置文件,在apt-get 时使用配置,15.10可用(针对需要下载的单个不同文件)

建立文件 vim proxyfile

Acquire::http::proxy "http://10.3.0.1:80";

Acquire::ftp::proxy "http://10.3.0.1:80";

Acquire::https::proxy "http://10.3.0.1:80";

使用时sudo apt-get install xxx -c proxyfile

(2)在主目录下的.bashrc文件中添加两行。(如果您希望apt-get和其他应用程序如wget等都使用http代理,您可以使用这种方式。 )

在您的.bashrc文件末尾添加如下内容
export http_proxy=http://用户名:密码@地址:端口/
export https_proxy=http://用户名:密码@地址:端口/

export ftp_proxy=http://用户名:密码@地址:端口/

ubuntu 代理配置


PPA

1.vim /usr/lib/python3/dist-packages/softwareproperties/ppa.py

在函数def _get_https_content_py3(lp_url)的catch案例中添加了一个print(e)显示了错误的真正原因。

2.系统时间是否正确

3.除了配置代理之外,请告诉sudo使用-E该标志来考虑环境

1
2
3
export http_proxy=http://<proxy>:<port>
export https_proxy=http://<proxy>:<port>
sudo -E apt-add-repository ppa:canonical-qt5-edgers/qt5-proper

with username and password:

1
export https_proxy=<username>:<password>@<proxy>:<port>

Ubuntu下让终端走SS代理的方法

Ubuntu下让终端走SS代理需要第三方软件的帮助,即privoxy。
privoxy 是非快取式 (non-caching) 的网页代理伺服器,具有进阶的过滤能力,可强化隐私权,还可以修改网页资料、管理 HTTP cookies、去除广告等。

安装 privoxy

sudo apt-get install privoxy

安装完成后在 /etc/privoxy 目录下可以找到配置文件 config。

配置 privoxy

一般地,改配置前应该备份配置。

mv /etc/privoxy/config /etc/privoxy/config.back

然后打开 config 文件,找到listen-address那一行,修改值为 privoxy 监听的地址,一般使用默认。

然后再找到forward-socks5那一行,去掉注释,值为SS代理监听的地址。

让终端走SS代理,修改配置后,重启 privoxy。

sudo /etc/init.d/privoxy restart

然后在终端下添加 http 代理。

export http_proxy=”127.0.0.1:8118”

export https_proxy=”127.0.0.1:8118”

然后就可以愉快的用终端翻墙了。

原文:https://blog.csdn.net/tailgo/article/details/52075643


Lets Encrypt 配置SSL错误 DNS problem: NXDOMAIN looking up A for xxx

  • 刚刚解析了A记录,解析服务器还没有生效
  • 服务器本地 DNS缓存未更新

1. 首先确定A记录是否成效

确定的方式很简单,在浏览器输入自己的域名,查看能否访问成功。

2. 确定DNS是否有问题

1) ping主机
1
2
# ping主机,如果无法发现host,则确定是dns问题
$ ping demo.ptbird.cn
2) 更新DNS缓存

不建议直接 network restart

使用nscd

如果系统没装可以装一下,nscd做DNS缓存加速很有用。

centos : yum install nscdubuntu :apt-get install nscd

如果已经装了直接更新

1
2
3
4
# 主要是hosts
$ nscd -i passwd
$ nscd -i group
$ nscd -i hosts

grep指令参数说明

https://www.cnblogs.com/forestwolf/p/6413916.html

  • 查看文件最后修改日期,返回值为时间戳stat -c %Y filename
  • 查看系统(软件)时间date、硬件时间clock
    • -s,用硬件时间覆盖软件时间
    • -w,用软件时间覆盖硬件时间
  • 与远程主机同步时间ntpdate ip

内部、外部命令

enable查看内部命令

外部命令的搜索目录在$PATH中指定

搜索时的优秀顺序根据hash缓存来决定,hash -d name清空name的缓存,hash -r清空所有缓存

使用内部命令而不使用别名

e.g. ls

1
2
3
4
5
6
7
8

ls <==> /bin/ls --color=auto
# 如何不调用别名呢
1. /bin/ls
2. \ls
3. 'ls'
4. "ls"
5. command ls

别名alias:

优先级: alias > 内部命令 > 外部命令

  • 设置别名alias xxx=yyy

  • 取消所有别名unalias -a

设置语言

1.先修改配置文件vim /etc/sysconfig/i18n中将en_US.UTF-8改成zh_CN.UTF-8,

2.然后. /etc/sysconfig/i18n立即生效

3.测试wall "Hello"给登录该服务器的用户发送信息

查看历史命令

history,查看到id后,可以!id进行再调用…!!执行前一个命令

1
2
3
4
5
6
!string 重复前一个以“string"开头的命令
!?string 重复前一个包含string的命令
!string:p仅打印命令历史,而不执行
!$:p打印输出!$(上一条命令的最后一个参数)的内容
!*:p打印输出!*(上一条命令的所有参数)的内容Astring 删除上一条命令中的第一个string Astring1Astring2将上一条命令中的第一个string1替换为string2
!:gs/string1/string2将上一条命令中所有的string1都替换为string2

$HISTSIZE记录了最大记录数

命令行历史保存在历史中,直到正常退出后会写入~/.bash_history

VIM插件管理

1.安装vim-plug

1
2
3
4
# 如果没安装curl的话,先安装curl
$ sudo apt install curl
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

2.修改~/.vimrc文件

1
2
3
call plug#begin()
Plug 'flazz/vim-colorschemes'
call plug#end()

3.执行更新

这步要确保安装了git

1
2
:PlugStatus # 查看插件类型
:PlugInstall # 安装插件

4.使用插件

删除插件:PlugClean

查询帮助

which: 查找文件:

  • 会在环境变量$PATH设置的目录里查找符合条件的文件

type: 返回命令的类型

whatis: 查看命令功能

  • 查询一个命令执行什么功能,可以查询到man需要的章节号

whereis:查找文件

  • 会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件
  • 只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令

内部命令: help command ,如help type

外部命令:

  • command --help
  • man(manual),帮助手册放在/usr/share/man
1
2
3
date -d "yesterday" +%F
date -d "-2 day" +%F
touch `date -d "yesterday" +%F`.log

Linux登陆欢迎提示信息的设置

Linux可以设置登录前后的欢迎信息,虽然没啥技术含量,但却是非常实用的一个小技巧。 实现登录消息的功能,可以修改3个文件。

1、/etc/issue 本地登陆显示的信息,本地登录前

2、/etc/issue.net 网络登陆显示的信息,登录后显示,需要由sshd配置

3、/etc/motd 常用于通告信息,如计划关机时间的警告等,登陆后的提示信息

Linux下如何卸载软件(apt系)

此方法适用于Debian、Ubuntu等带apt工具的操作系统。

首先我们需要知道将要卸载的软件名称,比如我现在打算卸载tightvncserver,但是如果你不确定名称,没关系,可以用Tab键自动补全来确定。

1
2
3
4
5
$ sudo apt-get autoremove --purge tigh[TAB]
# sudo——获取 root 权限
# apt-get——执行安装卸载功能的软件
# autoremove——告诉 apt-get 我们所要做的操作是移除软件
# –purge——注意这前面是两个短划线,这个参数是告诉他们要完整的干净的彻底的移除

1lsblk查看硬盘挂载

恢复rm删除的文件:

注意:查看一下当前系统版本号,及文件系统格式

df -T

1
2
3
4
5
6
7
8
9
10
11
12
13
# 查看当前硬盘分区
$ df .
# 使用debugfs
$ debugfs -w /dev/mapper/ubuntu--vg-root
# 列出当前目录下删除过的文件
$ ls -d /home/apollo3d
# 找到删除文件前的<>中的数据,即节点号
$ logdum -i <num>
# 退出debugfs模式
$ quit
# 进行恢复
$ sudo dd if=/dev/mapper/ubuntu--vg-root of=/home/apollo3d/xxx.py bs=2944 count=1 skip=9438337
# bs为offset量, skip为block量

apt-get update出现NO_PUBKEY错误的解决方法

在使用apt-get update命令时,出现了如下的错误,形式如“W: GPG error: http://security.ubuntu.com trusty-security Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY XXXXX”

1
2
3
4
# 执行更新,查看他缺少什么key 
$ sudo apt-get update
# 复制他提示缺少的key:xxx,输入即可
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key xxxx

Author: Mrli

Link: https://nymrli.top/2019/03/15/Linux命令手册/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
南京邮电大学java程序设计作业在线编程第五次作业
NextPost >
搭建Gitlab服务器
CATALOG
  1. 1. scp
  2. 2. ssh
    1. 2.0.1. 下面讲解openssh-server
  • 3. 增加桌面快捷方式
  • 4. 端口操作
  • 5. 创建新用户
  • 6. 为root用户提供初始密码
  • 7. 修改为阿里云 DNS
  • 8. 换源(更换数据源)
  • 9. Ubuntu无法找到add-apt-repository问题的解决方法
  • 10. 代理
    1. 10.1. 搜索代理
    2. 10.2. 配置代理
    3. 10.3. PPA
    4. 10.4. Ubuntu下让终端走SS代理的方法
      1. 10.4.1. 配置 privoxy
  • 11. Lets Encrypt 配置SSL错误 DNS problem: NXDOMAIN looking up A for xxx
    1. 11.0.1. 1. 首先确定A记录是否成效
    2. 11.0.2. 2. 确定DNS是否有问题
      1. 11.0.2.1. 1) ping主机
      2. 11.0.2.2. 2) 更新DNS缓存
      3. 11.0.2.3. 使用nscd
  • 12. grep指令参数说明
  • 13. 内部、外部命令
  • 14. 查看历史命令
  • 15. VIM插件管理
  • 16. 查询帮助
  • 17. Linux登陆欢迎提示信息的设置
  • 18. Linux下如何卸载软件(apt系)
  • 19. 恢复rm删除的文件:
  • 20. apt-get update出现NO_PUBKEY错误的解决方法