Linux命令

Linux命令

image

1. Linux基本概念

(1)目录结构

image

/bin:存放普通用户常用程序

/sbin:存放root用户常用程序

/usr/bin

/usr/sbin

/home:用户主目录所在位置

/lib:存放基本运行库,如C++库。

/root:root用户的主目录

/mnt:磁盘(文件系统)挂载点

/opt:自己安装的软件可放在这

/tmp:存放一些临时文件,如日志.log文件

/dev:外设

/media:U盘等

/usr/src:内核源码默认存放位置

/var:存放经常修改的数据,如系统日志(存于/var/log)

/proc:管理内存空间,系统内存的映射,是一个虚拟目录

/boot:存放Linux启动时使用的内核文件

(2)路径

  • 相对路径
  • 绝对路径
  • 根目录/
  • 用户home目录~
  • 当前目录./
  • 上层目录../

(3)指令

指令主体 [选项] [操作对象]

一条指令1个指令主体,可有多个选项,多个操作对象。选项、操作对象可选。

(4)属组和权限

Linux系统给所有者、同组用户、其他用户规定了不同的权限。

root用户不受权限限制。

Linux中的用户都是按照组划分,一个用户可以属于一个组或多个组。

文件或目录的所有者owner以外的用户,可分为同组的,和其他用户(不同组)。
image

  • 用户、用户组、其他用户的权限都以(r,w,x)表示,-表示不具有该权限。

  • 具有r/w/x可分别以数字4/2/1表示,如:权限为5表示rx,即可读可执行。权限7表示rwx,即可读可写可执行。具体一个文件是否可以执行还要看文件本身。

  • 对于目录来说:

    x表示可以进入目录(不是执行,目录没有执行的说法)

    r表示可以浏览目录的子目录和文件,但需要同时具有x权限(首先要能进入目录才能读写)

    w表示可以在目录中增加、删除、移动子目录或文件,但需要同时具有x权限

(5)在后台执行程序

在程序后加&

./demo&

(6)常用快捷键

  • 清屏

    ctrl-l

  • 清空已输入字符

    ctrl-c

  • 命令补全

    tab键

  • 光标移动到行首

    ctrl-a

  • 光标移动到行末

    ctrl-e

(7)设置secureCRT

  • secureCRT修改背景色:Options——>session Options

  • secureCRT出现key exchange failed,是SecureCRT 7.0客户端支持的和kali作为ssh服务端支持的SSH秘钥交换算法不匹配。

    处理办法
    修改
    /etc/ssh/sshd_config配置文件,增加如下一行,使
    新版本的Kali支持老版本的秘钥交换算法。

  • secureCRT中文乱码

    option——>Global option——>Default Session——>Edit Default Settings——>Appearance——>Character Encoding——>utf-8

(8)不要学系统管理

  • 学习难度大
  • 有专门的的系统管理员,不需要程序去做
  • 云技术的发展,硬件错误已经不需要用户操心

2. 用户和用户组管理

(1)切换用户-su

切换root用户:sudo su

切换普通用户:su - 用户名

(2)组管理

组管理信息存放于/etc/group

创建组-groupadd

groupadd 组名

删除组-groupdel

groupdel 组名

(3)用户管理

创建组后,就可以在组下创建用户,用户创建后需要设置密码才能使用。

用户信息存放于/etc/passwd

添加用户-useradd

useradd -n 用户名 -g 组名 -d 用户主目录

删除用户-userdel

userdel -r 用户名
# 加上选项-r表示删除用户的home目录

修改用户密码

这里为了方便只记root用户修改密码。

用户密码保存在/etc/shadow下,但是是以加密形式保存,所以密码忘记只能重置而无法找回。

passwd 用户名

修改用户的属组、home目录、shell

usermod -g 属组名 -d 用户主目录 -s /bin/bash
# -s表示修改用户的登录shell

3. 目录和文件操作

(1)ls

ls 目录 #查看某个目录
ls -l #列出路径
ls -a #列出包括隐藏文件/文件夹在内
ls -lt #以创建时间顺序列出
ll # ls -la简写
ll -t # ls -lat简写

(2)创建文件/目录

  • touch创建空文件
touch 1.cpp
  • mkdir创建文件夹
mkdir test
  • mkdir -p递归创建文件夹
mkdir -p workspace/test/code
  • 将屏幕显示的内容保存到文件,若文件存在则清空文件原有内容
ls -la > 1.txt
  • 将屏幕显示的内容追加到文件
ls -la >> 2.txt

(3)删除文件/目录-rm

rm -rf 文件/目录

-r 表示迭代,删除目录必须要加(删除目录及其所有子文件/子目录)

-f 表示强制,不加的话系统在删除时会询问

(4)复制文件/目录-cp

cp -r 旧文件/目录 新文件/目录

-r 表示递归(recursion),复制目录必须要加(复制目录及其所有子文件/子目录)

(5)移动或重命名文件/目录-mv

  • 当第二个参数的文件名或目录名不存在时,为重命名
mv 旧文件名/目录名 新文件名/目录名
  • 当第二个参数为已存在的目录,为移动
mv 文件/目录 已存在目录

4. 命令历史、自动补全、正则表达式

(1)命令历史-history

  • 命令历史

    命令历史文件.bash_history保存在用户主目录下,为隐藏文件,需要ls -la查看。

    光标上下选择历史命令。

    # 列出所有历史命令
    history
    # 执行历史命令列表中某条编号的指令
    !命令ID

(2)tab自动补全

可以自动补全名称。若以输入的字符开头的文件名有多个时,需要按下2次tab列出所有开头字符符合的文件。

(3)正则表达式

星号*匹配任意个的任意字符。?匹配1个任意字符。其他的正则表达式不常使用。

ls *.h #列出所有.h文件
ls std*.h #列出所有以std开头的.h文件
ls std??.h #列出所有形如stdxx.h的文件

5. 权限控制

(1)更改所有权-chown

只有root用户才能更改所有权,需先切换到root用户。

chown [-R] 用户 文件/目录
chown [-R] 用户:组 文件/目录

-R可选,表示递归,当修改的是目录时,将修改目录及其所有子目录和子文件

文件/目录可以是多个文件或目录,以空格分隔

(2)更改权限-chmod

有两种语法,但本质相同。

只有root用户和拥有者可以更改权限。

chmod [-R] 777 目录和文件列表
# 7 rwx 6 rw- 5 r-x 4 -w- 3 -wx 2 -w- 1--x
chmod [-R] WhoOperatorPermission 文件/目录
#如:
chmod ug+x 1.sh
chmod ugo=777 1.sh

Who

u:user,文件所有者

g:group,文件所有者的组

o:others,其他用户

a:相当于ugo,所有用户

Operator

+:增加权限

-:取消权限

=:按照Permission重新设置权限

Permission:rwx

6. 文件内容操作

(1)查看文件内容-cat

一次性显示文本文件所有内容,用鼠标滚动查看。适合查看文本量较少的文件。

cat 文件名

(2)查看文件内容-less

less 文件名
ls -lat | less #ls显示内容过多时用less查看

space:继续显示

ctrl-u:向上翻页

ctrl-d:向下翻页

j:下一行

k:上一行

q:退出

(3)统计文件行数-wc

wc 文件名
wc *
# 统计所有文件,显示列表:第一列行数、第二列单词数、第三列字节数

(4)查找文件内容-grep

grep 要查找的内容 文件名
grep -c 要查找的内容 文件名 #-c统计要查找内容的行数
netstat -an | grep "DGRAM" #常与管道符配合使用,表示在管道符提供的文件中查找
grep "funcAdd" *.h
#在所有.h文件中,查找字符串"funcAdd",结果将显示列表。

(5)显示文件尾部的内容-tail

文件很大时,用vi打开需要很长时间,且占用很大内存。若只需要查看最后若干行内容,用tail更方便。

tail -n 行数 文件名

(6)显示文件头部的内容-head

head -n 行数 文件名

(7)跟踪文件内容改变-tail -f

执行命令后,将在后台运行跟踪指定文件。当文件内容发生改变时,将立即显示

常用于跟踪日志文件(一些运行中的程序将会向日志中写入内容)

tail -f 文件名

7. 管道

#查看日志文件某个时间有多少行
grep "2022-09-20 10:32:44" logfile.log | wc

8. 链接

Linux链接分为硬链接和软链接(也叫符号链接)。

不论是硬链接还是软链接都不会在硬盘中将原inode中的内容复制一份,占用的内存都很小。

(1)硬链接

只能链接文件,不能链接目录。

创建文件file1的硬链接file2,通过file2文件名可以访问file1的在硬盘中的inode,并没有在磁盘中创建新的inode。而只是通过系统调用link()给原inode增加了一个人类可读名称file2(相对于inode号来说人类可读)。

file2硬链接创建后,file1和file2都指向同一个inode,引用计数增加1。

删除file1或file2,只会令链接计数减少1,只有当链接计数减少到0时,系统才会真正的将inode从硬盘上删除。

硬链接只能链接同一个文件系统中的文件,不能跨文件系统(不能跨磁盘,df查看磁盘)。

ln 文件名 链接名

image
2列对文件来说是链接数,对目录来说是子目录个数。**

(2)软链接

类似Windows中的快捷方式。

软链接会在硬盘中创建新的inode,新Inode中存储的是原文件的路径。

删除软链接会删除存储了路径的inode,不会删除原inode。

软链接可以跨文件系统创建链接。

软链接文件类型为l,以箭头链接名——>文件名表示。

若删除文件,则ls查看时链接名——>文件名的文件名将会闪烁,若以cat 链接名查看则会提示文件不存在。

ln -s 文件名 链接名
#跨文件系统的例子
sudo su
ln -s /home/wk/workspace/1.sh /opt/2.sh

image

(3)硬链接和软链接的作用

  • 硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。只删除一个连接并不影响节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
  • 软链接又称之为符号连接(Symbolic Link)。软链接文件类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

9. secureCRT上传、下载文件

(1)Windows和Linux之间发送文件

secureCRT标签页上右键选中连接sftp

pwd #查看Linux当前目录
lpwd #查看Windows本地当前目录
ls #查看Linux当前目录内容
lls #查看Windows本地当前目录内容
cd #切换Linux目录
lcd #切换Windows本地目录
put 文件名 #Windows本地上传到Linux服务器
get 文件名 #Linux服务器下载文件到Windows本地
put -r 目录名 #Windows本地上传文件夹到Linux服务器
get -r 目录名 #Linux服务器加载文件夹到Windows本地
exit #退出sftp

(2)scp-两个Linux服务器间传送文件

通过secureCRT可以在Windows和Linux间传送文件。2台Linux服务器间可以通过Windows作为中介传送文件,但这种方法麻烦。scp可以在2台Linux服务器间传送文件。

#当前在主机192.168.42.10上
scp -r 源 目的 #从源拷贝到目的。
scp -r root@192.168.42.1:/tmp/aa /tmp #将192.168.42.1的tmp下的aa及其子目录拷贝到192.168.42.10的tmp下

scp和cp的区别只在于文件前要加上用户名@IP地址:文件路径


10. 软件包安装、卸载

软件包的安装、卸载都要root权限。

过去的Linux只能用RPM安装软件包,且需要手动解决软件包的依赖问题:要安装软件包A,要先安装软件包B,要安装软件包B要先装软件包C。。。

现在都用软件包管理器(yum和apt),它可以自动解决软件包的依赖问题并一次性从指定的服务器(默认软件源在国外,国内修改为阿里源)上下载所需要的所有软件包。RedHat系常用yum,Debian系常用apt。

#apt包管理器
apt install 软件包名 #安装
apt remove 软件包名 #卸载
apt upgrade #升级软件包
apt update #列出所有可更新的软件
apt update 软件包名 #更新某个软件
#yum包管理器
yum -y install 软件包名 #安装
yum -y remove 软件包名 #卸载
yum update 软件包名 #升级软件包

11. 打包、压缩解压

(1)打包

zip 包名 目录或文件名列表 #zip是通用压缩格式,Windows和Linux都支持
tar -zcvf 包名 目录或文件名列表

(2)解压

unzip 包名
tar -zxvf 包名 [-C 解压到路径]

12. Linux进程

(1)查看进程

ps -ef | less
ps -ef | grep 关键字 #查找指定进程

UID——运行进程的用户。root运行为系统进程。

PID

PPID——父进程的PID

C——进程占用CPU百分比

STIME——进程开始运行的时间

TIME——进程累计使用CPU的时间

CMD——进程是哪个程序运行

(2)终止进程

kill PID
killall 程序名
-9选项表示强行终止 #进程比较顽固终止不了加-9。 kill -9 PID

13. 性能分析工具top

top是Linux下常用性能分析工具,可实时显示系统运行的总体状态和每个进程使用资源的情况,类似Windows下的资源管理器。

显示信息每3s刷新一次。

top [选项]

image

第一行:系统信息:当前时间、系统已运行时间、系统登录用户数、系统负载(一段时间系统正在处理和等待处理的进程数之和:1min、5min、15min的平均值)
任务:进程统计信息:总进程数、正在运行进程数、休眠进程数、终止进程数、僵尸进程数
Cpu:CPU使用信息:us-用户进程使用CPU百分比、sy-内核进程使用CPU百分比、id-空闲CPU百分比、wa-等待磁盘IO的进程使用CPU百分比(若wa很高,说明程序的性能瓶颈在磁盘IO)
Mem:内存使用信息:总内存、空闲内存、已使用内存、内核使用的缓存大小
Swap:虚拟内存(优先使用物理内存,物理内存不够才使用虚拟内存)使用信息
image

14. 其他命令

(1)find-查找文件

grep和find的区别,前者通过内容查找,后者通过文件属性查找

find path -[option] -print
# 打印对查找出来的文件
find path -[option] -ok command {} \;
# 对查找出来的文件执行command
find ./ -name 1.out -ok rm -r {} \; #例子

option

name:文件名。文件名要用双引号括起来

type:文件类型

f——文件

find path -type f -name "1.sh"

d——目录

l——链接文件

p——管道文件

user:所有者

group:所有者所在组

size:大小

+nc:大于n字节的文件

-nc:小于n字节的文件

+nM大于nM字节的文件

mtime:天数

-n:n天内修改

+n:修改超过n天

n:修改恰好n天

-ok command {} \

{}表示查找的结果

ok会询问是否执行command,若不想询问可换成exec

(2)df-查看磁盘分区

df -h #以G为单位查看
df -m #以M为单位查看

image

文件系统中含有tmpfs的文件系统为虚拟的磁盘系统,是系统使用的,用户无法使用。

/dev/sda1才是我们可以使用的磁盘分区。

在工作中,分区、挂载点、文件系统这三个词表达的是同一个意思。

挂载在根目录下的文件系统可以叫做根分区或根文件系统。把文件放在根目录及其子目录下就是使用根分区。

(3)du-查看目录大小

du -h #以G为单位统计目录大小
du -m #以M为单位统计目录大小

(4)free-查看内存和虚拟内存信息

free -h #以单位G查看
free -m #以单位M查看

(5)tree-显示目录文件树

apt install tree #安装tree
tree 目录

15. 设置虚拟机网络静态IP

企业的网络有统一规划,服务器的网络参数都是由网络管理员分配的,不用程序员操心。

自己个人使用的电脑的IP地址往往由路由器的DHCP动态分配,也不需要自己配置网络参数。但DHCP会导致IP地址一直变化,会导致虚拟机Linux系统的IP一直变化,远程登录麻烦,所以设置成静态IP。

(1)VM虚拟机网络模式

VM虚拟机会创建2个虚拟网卡VMnet1和VMnet8,分别用于主机模式和NAT模式(网络地址转换)。

VM虚拟机提供了3种网络模式:桥接模式、NAT模式(默认)、主机模式(基本不用)。

桥接模式

虚拟机和宿主机是平等地位,相当于连接了同一交换机的两个主机。

该模式没有使用虚拟网卡,会给虚拟机分配真实的IP、网关、子网掩码等。

虚拟机可以和局域网中的主机互相访问,也可以访问互联网。

配置虚拟机桥接模式

  • 虚拟机设置——>网络适配器——>桥接模式+复制物理网络连接状态

  • 编辑——>虚拟网络编辑器——>VMnet0(桥接模式-自动桥接)(若知道自己宿主机用的什么网卡则选择对应网卡)

image

  • 若没有VMnet0点击左下角的还原默认设置
  • NAT模式

    使用虚拟网卡VMnet8为虚拟机分配IP、网关、DNS。

    虚拟机和宿主机可互相访问,虚拟机可以访问局域网中其他主机、也可以访问互联网。但局域网中其他主机无法访问虚拟机。(也就是局域网中的其他主机无法使用当前宿主机上的虚拟机)

(2)配置静态IP、网关、子网掩码、DNS

  • 切换到网络配置目录

    cd etc/sysconfig/network-scripts
  • 打开虚拟机网卡配置文件

    vi ifcfg-ens33
  • ONBOOT这行在CentOS中默认值是no,表示不启动网卡。手动改为ONBOOT=yes。

  • NAT模式添加

    网关的取值查看:VM——>虚拟网络编辑器——>VMnet8-NAT设置——>网关

    IP取值:除了网关和宿主机的IP以外的同网段IP都可选

    BOOTPROTO=static #=dhcp表示设置为动态IP,设置static表示设置为静态IP
    IPADDR=192.168.42.128 #IP地址
    NETMASK=255.255.255.0 #子网掩码
    GATEWAY=192.168.42.1 #网关
    DNS1=8.8.8.8 #谷歌DNS服务器
    DNS2=114.114.114.114 #中国电信DNS服务器
  • 桥接模式添加

    查看宿主机的IP和子网掩码、网关。IP不和宿主机一样就行,子网掩码、网关和宿主机相同。DNS同NAT模式。

(3)修改主机名

主机名不能代表服务器,但是若有多个服务器,取个合适的主机名是必要的

bash提示符中格式为用户名@主机名,就可以看到主机名是什么

hostnamect | set-hostname kali192 #修改主机名为kali192

16. 网络故障诊断

(1)ping-网络连通测试

ping不通,要么是网络有问题,要么是目标主机有问题。

主要关注时间、丢包率

ping -c 5 -s 1024 目标IP/域名 # 可以通过 ping 域名 的方式获得该域名的IP地址

-c:Linux默认一直ping下去。该参数指定ping包个数。

-s:指定包大小,默认84字节,最大不超过65535字节。

(2)设置CentOS禁止被ping

服务器攻击一般是从ping开始,黑客攻击从ping服务器开始看它是否在线,若服务器禁止ping,可在一定程度上减少被攻击的次数。CentOS默认可ping,通过修改禁止被ping:

vi etc/sysctl.conf
在文件末尾加上
net.ipv4.icmp_echo_ignore_all=1
保存
执行:sysctl-p使得配置生效

若想恢复被ping,只需设置net.ipv4.icmp_echo_ignore_all=0

(3)telnet-服务可用性测试

telnet 目标IP/域名 端口号

telnet失败的原因:

  • 目标主机未运行
  • 目标主机未提供指定端口的服务
  • 被防火墙拦截

17. 系统服务管理(程序开机自启)

服务:运行在后台的程序

从CentOS7开始以systemctl管理系统服务,类似Windows中我的电脑->管理->服务和应用程序->服务

服务的配置文件放在/usr/lib/systemd/system目录下,命名格式为:服务名.service,查看有哪些服务:

ls /usr/lib/systemd/system | less

(1)systemctl

system control,格式为systemctl 操作 服务名

  • 启动服务

    systemctl start 服务名
  • 终止服务

    systemctl stop 服务名
  • 重启服务

    systemctl restart 服务名
  • 查看服务状态

    Active那一行查看状态,后面跟着状态变化的时间。

    systemctl status 服务名
  • 开机自启动某服务-常用

    systemctl enable 服务名
  • 禁止开机自启动某服务-常用

    systemctl disabled 服务名
  • 查看某服务是否为开机自启动-常用

    systemctl is-enabled 服务名
#例
systemctl start firewalld #启动防火墙服务
systemctl status firewalld #查看防火墙服务状态。

(2)添加自定义系统服务

希望自己编写的服务程序,可以在服务器启动时自动运行,在服务器关闭时终止。但是这种方法比较麻烦,通过配置/etc/rc.local脚本也可以实现开机自启动程序。

  • 编写自定义系统服务程序

  • 编写自定义系统服务脚本文件,给脚本增加可执行权限chmod+x start.sh restart.sh stop.sh

    start.sh

    restart.sh

    stop.sh

  • 编写自定义系统服务的配置文件

    需要root权限

    系统服务的启动、重启、停止都是由配置文件决定的。假设服务程序为demo01,我将服务命名为demo01.service

    创建配置文件/usr/lib/systemd/system/demo01.service

    [Unit]
    Description=demo01
    After=network.target #告诉Linux启动网络之后再启动该自定义服务
    [Service]
    Type=simple
    ExecStart=/usr/bin/su -wk -c "home/wk/start.sh" #表示服务启动要执行的命令或脚本。su -wk -c 表示切换到用户wk并执行命令/脚本。
    ExecRestart=/usr/bin/su -wk -c "home/wk/restart.sh"
    ExecStop=/usr/bin/su -wk -c "home/wk/stop.sh"
    RemainAfterExit=yes
    [Install]
    WantedBy=multi-user.target
    "/usr/lib/systemd/system/demo01.service"
  • 加载服务配置文件

    systemctl daemon-reload
  • 启动自定义系统服务

    systemctl start demo01
  • 设为开机自启动

    systemctl enable demo01

18. CentOS可配置/etc/rc.local脚本实现服务启动(程序开机自启)

  • /etc/rc.local脚本在开机时运行,其中的内容是按照顺序执行的,执行完一个程序才会执行下一个。如果某个程序要写在rc.local中开机自启,但它不是后台程序,在它运行完之前rc.local会阻塞,导致开机阻塞。就要在脚本中运行该程序时加个&,让它在后台执行。

    #在/etc/rc.local脚本中添加以下命令,开机自启
    /usr/bin/date >> /tmp/date1.log #开机将时间记录到日志文件
  • 环境变量缺失问题

    在rc.local中执行程序时无法使用环境变量,解决方法:

    在脚本中通过export设置环境变量,要用什么环境变量就设置什么。


19. CentOS计划任务

计划任务即周期性的自动执行程序或脚本,包括用户计划任务系统计划任务

Linux用crond服务提供计划任务,crond每分钟都会检查是否有需要执行的任务,如果有就执行。

查看crond服务状态:systemctl status crond

(1)用户计划任务

每个用户都可以定义自己的计划任务,用于周期性的执行程序或脚本。

计划任务的内容存放于crontab文件中,每个用户都有自己的crontab文件。

  • 查看crontab文件内容

    #普通用户只能查看自己的crontab
    crontab -l
    #root用户通过-u查看指定用户的crontab
    crontab -l -u 用户
  • 修改crontab文件内容

    crontab -e
    # 该命令以nano编辑器打开,ctrl-x退出

image
​ 内容由执行周期和执行的程序或脚本组成。若要执行多个程序或脚本,程序或脚本间以;分隔(shell中也可以,如:clear;pwd;ls -la)。

Kali-linux 定时执行任务Crontab的简单设置


20. 防火墙

防火墙是在内网和外网之间构建的一道保护屏障。

分为网络防火墙和主机防火墙。前者包括硬件、软件,可以保护整个网络、功能强大、价格昂贵。

主机防火墙,只有软件,用于保护本操作系统。

  • 查看防火墙

    systemctl status firewalld #查看防火墙状态
  • 启动防火墙

    systemctl start firewalld
    systemctl restart firewalld
  • 关闭防火墙

    systemctl stop firewalld

21. 环境变量

程序的执行需要参数,若多个程序需要一个共同的参数,则应该把该参数设置为环境变量。

Windows中我的电脑->属性->高级系统设置->环境变量,分为用户变量和系统变量。用户变量存放的是该用户的环境变量,系统变量存放的是所有用户共同使用的环境变量。

(1)env-查看环境变量

env | grep LD_LIBRARY_PATH
echo $PATH

(2)常用环境变量

  • LANG

    Linux系统使用的语言和字符集,默认的中文字符是zh_CN.UTF-8,是主流。

    若secureCRT出现乱码则是字符编码和虚拟机不一致。

  • PATH

    可执行程序(Linux命令、用户的应用程序)的搜索目录。在shell中输入Linux命令或应用程序时,若不指定目录,系统会默认去PATH指定的目录下去找。

  • LD_LIBRARY_PATH

    C/C++动态链接库文件搜索的目录,不是Linux默认的环境变量,对C/C++程序员很重要。

(3)设置环境变量

  • 临时设置,只在当前shell生效,退出shell即失效:

    export 环境变量变量名='变量值'
  • 设置PATH环境变量

    PATH的值是目录清单,目录之前以:分隔。

    shell的字符串拼接:

    export PATH=$PATH:/home/wk/workspace #添加/home/wk/workspace到PATH
    #执行当前目录下的程序需要./demo,若输入demo想要执行程序怎么做?
    #ANS:将当前目录添加到PATH中,每换一次目录都要添加一个目录到PATH中?
    #只要将任意目录的当前目录添加到PATH中
    export PATH=$PATH:.
  • 设置系统环境变量(永久生效)

    系统环境变量对所有用户生效

    在etc/profile.d中创建脚本cd /etc/profile.d

    vi abc.sh
    添加内容:
    export aa='aa value'
    export bb='bb value'
  • 设置用户环境变量(永久生效)

    用户环境变量只对当前用户生效,每个用户都可以配置只属于自己使用的环境变量

    在用户主目录下有几个隐藏文件,通过ls -l .bash*查看。

    .bash_profile中添加用户环境变量。

    export aa='aa value'

22. 云服务器的网络设置

(1)云服务器的网络环境

购买的云服务器会有一个公网IP和一个私有IP,私有IP是服务器那边的局域网内的IP,局域网内的服务器可以互相访问。公网IP是通过互联网访问这个服务器的IP,是由路由器将公网IP绑定到局域网内的某个服务器的。

有的服务器也可以没有公网IP,比如:一个网站的访问量太大,一台服务器扛不住,需要2台,一台负责网站访问,一台负责数据库。那么负责网站访问的那台服务器可以分配一个公网IP用于用户通过互联网访问,负责数据库的那台服务器就可以不要公网IP,而是可以通过有公网IP的那台服务器在局域网内通过ssh链接。

也可以在云服务器的云控制台登录。

首先通过连接有公网IP的那台服务器,然后ssh另一台只有私有IP的服务器
ssh root@私有IP

image

(2)配置云服务器的安全组/访问策略(访问规则)

公网访问服务器通过2道防火墙。

讲解视频:https://www.bilibili.com/video/BV1QG4y1t7ME?p=29&spm_id_from=pageDriver&vd_source=3b08e97e50222fa2ec22737f6dcb2202

访问策略/安全组:每个云服务器都有主机防火墙,外面还有一个总的防火墙,这个总的防火墙就叫安全组。

比如在其中一个服务器上运行一个服务程序,端口号是5005,那么主机防火墙要开通端口号5005,安全组也要开通端口号5005。外部通过公网IP访问这个服务器的5005端口需要通过这2个防火墙。(服务器在局域网内部通过私有IP互相访问时没有经过防火墙。但通过公网IP访问时要通过安全组)
image

在云服务器操作页面,创建安全组->设置访问规则(入方向)->添加端口5005

23. 云服务器的安全问题

云服务器被黑客攻击,会被云平台收回(不退钱)

所以按照下列步骤处理:

  • 设置强密码并保存

  • 禁用root用户远程登录

    创建普通用户,以普通用户的身份登录服务器,若需要用到root用户,以su切换。

  • 修改ssh端口

    把ssh端口号改为其他,不要用22。

    修改/etc/ssh/sshd_config
    #Port 22
    改为
    Port 其他端口号
posted @   徘徊彼岸花  阅读(105)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示