后端学Linux

前言

后端工程师,而非专业的运维工程师,学习Linux不需要掌握非常深的内容,看这篇就够了。

一、需要掌握的常识

1、什么是Shell和Bash

真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。

Shell(壳)官方定义:

Unix shell:一种壳层与命令行界面,是Unix操作系统下传统的用户和计算机的交互界面。
普通意义上的shell就是可以接受用户输入命令的程序。
它之所以被称作shell是因为它隐藏了操作系统底层的细节。
Unix操作系统下的shell既是用户交互的界面,也是控制系统的脚本语言。

bash是shell的一种,是Linux默认shell。

在早年的UNIX年代,发展者众多,所以就有许多不同的版本,例如Bourne shell(sh),这也是必然的,每种shell都有其应用的需求,很难说孰好孰坏。而在Linux中默认的shell就是Bourne-Again shell(简称bash),所以学习linux就必须要掌握bash的用法。另外一个是伯克利分校比尔▪乔伊写的C Shell(csh),因为类似C语言,故此得名。而由这两种又发展出很多其它的版本,不过根基都在这里。

2、Linux目录结构

与Windows不同,Linux没有盘符的概念,只有一个根目录 /
Windows路径是右斜杠,Linux路径是左斜杠。例如:

C:\Users\Administrator>

/usr/local/go

通常Linux具备如下目录:

/dev  存放抽象硬件
/boot  存放内核与启动文件
/lib  存放系统库文件
/bin  存放二进制文件(可执行命令)
/sbin  存放特权级二进制文件
/usr  存放安装程序(软件默认目录)
/var 存放经常变化的文件
/mnt  文件挂载目录(U盘、光驱)
/home  普通用户目录
/root   特权用户目录
/etc   配置文件目录
/opt    大型软件存放目录(非强制)

/etc目录下存放着哪些常用的配置文件?

3、提示符的含义

Linux提示符一般包含当前登陆的用户名 ,主机名,以及当前工作路径路径,最后都是以 $ 或者 # 号结束,普通用户以 $ 号结束,root用户以 #结束。例如:

root@ubuntu-B8252:/home/ubuntu#

4、命令

4.1、命令加载的顺序

shell 首先检查命令是否是内部命令,不是的话再检查是否是一个应用程序,这里的应用程序可以是Linux本身的实用程序,比如ls rm。

然后shell试着在搜索路径($PATH)里寻找这些应用程序。搜索路径是一个能找到可执行程序的目录列表。如果你键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。而如果命令被成功的找到的话,shell的内部命令或应用程序将被分解为系统调用并传给Linux内核。

4.2、命令的格式

基本命令的格式:

    命令 空格(可多个) 参数(可写可不写) 空格 文件,文件夹(可写可不写)
例: ls              -a                   /opt

4.3、复杂命令

Linux中允许多个命令连起来写。连起来的情况:
分号隔开:顺序执行
&&隔开:成功后执行
|| 隔 开: 失败后执行
|隔开:前面命令的输出作为后面命令的入参,常见:ps -ef | grep java
&结尾:表示将此进程设置为后台进程
linux命令分号&&和&,|和||的用法(转)

4.4、常用命令

常见的Linux内部命令有哪些?
常见的应用程序命令有哪些?

5、用户和权限管理

//TODO

6、常用配置文件

Linux export 命令用于设置或显示环境变量。

在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
export命令

那么想永久配置环境变量怎么办?需要写入profile文件。

Linux中修改环境变量及生效方法(永久、临时)环境变量查看

~/.profile和/etc/profile的区别

7、防火墙

//TODO

二、常用命令

以下是未整理的:

sudo root
su root
vim .bashrc
export GOPATH
export PATH=
export 

source ~/.bashrc
go version
echo $PATH

:q

rust -version
vim /etc/profile

i
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
source /etc/profile

SwitchyOmega

export http_proxy="http://127.0.0.1:12333"
export http_proxy="https://127.0.0.1:12333"

curl www.google.com

cat ~/.ssh/id_rsa.pub
ssh -rsa AAAAB3Nza...

install net-tools

apt-get install shadowssocks

ssh -p 33 root@27.

tmux new -s
tmux ls

vim /etc/shadowsocks.json
{
    "server":"122.192....."
    "server_port":
    "local_address":
    "local_port"
    "password":
    "timeout":300
    "method":"chacha20-left"
}

chmod 755 /etc/shadowsocks.json
ssserver -C /etc/shadowsocks.json -d start

sudo apt-get update
sudo ss-local -c /etc/shadowsocks.json

export https_proxy="socks5://127.0.0.1:1080"


cd lotus
git branch
git checkout

git config --global https.proxy 'socks5://127.0.0.1:1088'
git clone git@github.com:ylpool/lotus.git

ifstat
ifconfig
sudo ethtool
sudo wget 
ssr config
:set pas
sudo apt-get install netstat

netstat -ano|grep 1088

apt-get install net-tools

make clean all
export http_proxy

sudo 

tmux new -s lotus-v1.8
vim ./profile
export 
git clone git@......git


git clone git@github.com:ylpool/lotus.git
scp -P 33 test-vectors

1、常用的Linux内部命令和Linux自带应用程序命令

1.0、众所周知的命令

ls
cd
ps -ef | grep xxx
cat xxx.log | grep "关键字"
tail -fn100
find -name "*.sh"
kill -9 
java -jar
java -version

1.1、 source

source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。

功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。

1.2、export

临时设置环境变量,若想永久设置,应写入profile文件。

1.3、echo

显示,常用echo $PATH显示环境变量

1.4、ssh

除了远程连接到服务器,还有很多其他功能。如生成rsa密钥,配置到git私库
ssh-keygen -t rsa -C “your_email@youremail.com”

ssh-keygen -t rsa
cd .ssh
cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC
pBqni9U924kgosbP7u3/NluJ1uPB3......
4QPhjwYi3E= root@iZ8vbfh73l8663gu8trbveZ

在github网站找到设置、SSH、New SSHkey,把刚刚的公钥添加进去,前面的ssh-rsa 和最后的root@iZ…都要添加,要完整的,然后命名保存,保存好之后如下图。
在这里插入图片描述
这样的操作完成后就可以git clone了。

详细用法参考:
ssh命令详解

1.5、curl

在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载。

详细用法参考:
curl命令详解

1.6、chmod

chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令

详细用法参考:
chmod命令详解

1.7、ifstat

统计网络接口流量状态。

1.8、ifconfig

ifconfig命令用于显示或设置网络设备。

ifconfig可设置网络设备的状态,或是显示目前的设置。

1.9、netstat

netstat 命令用于显示网络状态。

利用 netstat 指令可让你得知整个 Linux 系统的网络情况。

netstat -nano|grep 1088

1.10、scp

scp 命令用于 Linux 之间复制文件和目录。

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

2、常用的第三方应用程序命令

如果不是系统自带的程序,命令的格式通常为:
应用程序名 空格 命令名 空格 命令参数 空格 输入参数

2.1、apt命令

apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

同样是软件包管理器,Linux yum 命令及和 rpm apt 的区别是什么?

2.2、git命令

在这里插入图片描述
在这里插入图片描述
从远程仓库克隆的命令:

git clone -b master git@github.com:xxx/lotus.git

如果clone时没有私库权限导致失败,解决方法见上面ssh命令。
或者还有一种情况,开VPN访问GitHub后,是需要关VPN克隆的,否则克隆不下来。

clone Github上的代码仓库速度慢,可以用码云fork仓库后从码云下载。

推送到远程仓库命令:

git push

完整流程:

git config --global user.name 'xx'
git config --global user.email 'xx@xx.xx'
git clone -b master git@github.com:xxx/lotus.git
touch test.txt
git add test.txt
git commit -m 'first commit'
git push
#如果是私库,在push之前先在配置文件.git/config中
#设置http://用户名:密码@github.com/用户名/仓库名.git
#如下图

在这里插入图片描述
如果别人修改了项目,我需要拉取最新代码,命令为:

git pull origin

如果上述工作都做了,却还是push不了,可能是组长没有给组员开权限。

查看当前代码分支

git branch

2021.11.16更新:通过token拉取代码

git clone  https://your_github_token@github.com/username/repo_name.git

回退到某次提交:

//本地回退:
git reset --hard f32e28da8eb57a78bd2708479d5e4226c9e5a6dd
//然后是强制推送到远程:
git push -u origin master -f

2.3、tmux

我们在linux服务器上的工作一般都是通过一个远程的终端连接软件连接到远端系统进行操作,例如使用xshell或者SecureCRT工具通过ssh进行远程连接。在使用过程中,如果要做比较耗时的操作,例如有时候进行编译,或者下载大文件需要比较长的时间,一般情况下是下班之后直接运行希望第二天早上过来运行完成,这样就不用耽误工作时间。但是网络有时候不稳定,可能在半夜会出现连接断掉的情况,一旦连接断掉,我们所执行的程序也就中断,我们当然可以写一个脚本后台运行,但是还是不方便。那么有没有一种工具可以解决这样的问题呢。这就是我们这里要提到的tmux了。其实类似tmux的工具还有很多。例如gnu screen等。tmux刚好可以解决我们描述的问题,当我们在tmux中工作的时候,即使关掉SecureCRT的连接窗口,再次连接,进入tmux的会话我们之前的工作仍然在继续。

tmux最大的好处是可以保存状态,对于登录到服务器工作的人,可以节省大量时间,而且多窗口省去了开非常多窗口切换的时间。
tmux终端复用
多窗口管理器tmux
10分钟学会tmux

2.4、shadowSocks

2.4.1、ssr config
2.4.2、ssserver

2.5、wget

是类似迅雷的下载工具。支持http、ftp下载,支持断点续传。

三、工作场景

1、SSH远程连接到服务器

ssh -p 33 root@192.168.0.1

2、切换用户为root

su root

3、如何多窗口显示

screen -S windowName   #此命令用于创建一个窗口

#用Ctrl + A + D 退出窗口,窗口内运行的程序会切换到后台运行。

screen -x windowName  #此命令可回到之前创建的窗口。

4、安装项目依赖

git submodule update --init --recursive  #拉取项目子模块
go mod tidy                              #拉取go依赖包

5、配置环境变量

6、测试网速

7、抢饭技术

www://https
plus
.yahaha.
/user
10324
https://arcdetri.github.io/shadowsocksr-ssr-on-ubuntu.html
上面这个,如果是自用,只装客户端client就行。
https://zhuanlan.zhihu.com/p/166375631

9、Lotus部署文档

Lotus官方安装文档中文版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值