近日学习笔记:df -h和du -sh命令,查看linux版本,vbm管理工具,su命令,ssh服务升级技巧,source命令

2022-09-22 18:29:40 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

文章目录
  • df -h和du -sh区别
    • df -h查看整个系统中文件系统的使用情况
    • du -sh *查看当前目录下各个文件及目录占用空间大小

  • 查看Linux系统版本的命令:
  • VirtualBox管理工具Vboxmanage
  • su与 su -的区别
  • echo $?
  • ssh服务升级
  • BBS-GO的安装 linux 宝塔面板【进了解】
    • 宝塔界面 数据库 NGINX的安装
  • source命令
  • ~目录和/目录的区别

df -h和du -sh区别

(du, disk usage,-s仅显示总计,-h自适应单位 )

df -h查看整个系统中文件系统的使用情况
代码语言:javascript复制
文件系统                  容量   已用  可用  已用% 挂载点
devtmpfs                 9.8G     0  9.8G    0% /dev
tmpfs                    9.8G     0  9.8G    0% /dev/shm

Size 分割区总容量 Used 已使用的大小 Avail 剩下的大小 Use% 使用的百分比 Mounted on 路径地址

du -sh *查看当前目录下各个文件及目录占用空间大小

大小 文件名 4.0K test.txt


查看Linux系统版本的命令:

#cat /etc/redhat-release,这种方法只适合Redhat系的Linux

VirtualBox管理工具Vboxmanage

工具安装完成后Vboxmanage可以简写为vbm(以下命令均可)

  • 查看当前主机下的虚拟机

VBxoManage list vms

  • 查看当前正在运行的虚拟机

VBoxManage list runningvms

  • 启动虚拟机

VBoxManage startvm 虚拟机名

  • 无前端图形界面方式启动虚拟机

VBoxManage startvm 虚拟机名 –type headless

  • 使用 VRDP 方式通过命令行启动虚拟机: (3389)

VBoxManage startvm 虚拟机名 –type vrdp

  • 关闭虚拟机

VBoxManage controlvm 虚拟机名 poweroff


VBoxManage [-v|-version] 显示virtualbox的版本号 VBoxManage -nologo 隐藏logo VBoxManage -convertSettings 允许自动转换设置文件 VBoxManage -convertSettingsBackup 允许自动转换设置文件,并在转换前作备份 VBoxManage -convertSettingsIgnore 允许自动转换设置文件,但是不保存结果

su与 su -的区别

  • 使用su切换用户,只是用户发生变化,当前的操作环境还是在之前的位置(之前用户的操作环境,不安全)
  • 使用su -切换用户,不仅用户变化,且操作环境也变成新用户的环境(推荐)

echo $?

在进行源代码编译,或者执行命令无法确认所执行的命令是否成功执行的情况下,会使用 echo $? 来进行测试。

如果返回值是0,就是执行成功;如果是返回值是0以外的值,就是失败。

原理:进程生命周期

当一个进程执行完毕时,该进程会调用一个名为 _exit 的例程来通知内核它已经做好“消亡”的准备了。该进程会提供一个退出码(一个整数)表明它准备退出的原因。按照惯例,0用来表示正常的或者说“成功”的终止。

也就是说我们在执行 echo $? 时返回的值就是进程的退出码。而且,这个退出码是由刚刚执行完的进程提供给系统内核的。

ssh服务升级

规则:

linux系统自带的ssh服务(默认端口22),为了日常维护,我们实际需要使用特定的ssh服务,特殊配置,并且随时进行更新

所以默认停用系统自带的ssh,下载安装最新版本的ssh存放于/opt/下,并修改配置

下载、更新的大致思路如下:

为了避免更新时操作失误,导致ssh断开连接后,无法远程连接,需要ssh双端口操作

  1. 先将系统自带ssh开启(已有一个自定义ssh的情况),然后将系统自带ssh端口改为一个任意数值,此处为5222,测试此端口的连通性,作为后门
  2. 下载安装/更新自定义的ssh服务,将新的ssh服务端口先设置为222,进行一系列配置后,验证连通性
  3. 最后将自定义的那个ssh服务,端口从222改回22,即此端口作为日常使用
  4. 确定更新完成后,系统自带ssh(5222端口),可以关闭也可以不关

步骤如下

  • 查看openssh版本号
代码语言:javascript复制
ssh -V
  • 开启系统自带ssh服务
代码语言:javascript复制
systemctl start sshd   
  • 修改其相关配置(端口改为5222,权限等)
代码语言:javascript复制
vim /etc/ssh/sshd_config

PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes

  • 官网下载ssh最新安装包

Index of /pub/OpenBSD/OpenSSH/portable/

代码语言:javascript复制
openssh-8.9p1.tar.gz    

将文件传入目标主机

代码语言:javascript复制
rz

解压

代码语言:javascript复制
tar -xf openssh-8.9p1.tar.gz

安装编译到特定目录下你,作为自定义的ssh 此处使用/opt/ssh

进入openssh-8.9p1

代码语言:javascript复制
./configure --prefix=/opt/ssh --with-pam --with-libedit*

./configure的作用是检测系统配置,生成makefile文件,以便你可以用make和make install来编译和安装程序。

(此步骤之前需要安装相关依赖——gcc,cc,clang,zlib,zlib-devel,libedit-devel ,make ,openssl-devel ,gcc-c ,pam*,等,直接用yum)

代码语言:javascript复制
 prefix选项是配置安装的路径
 --with指的是安装本文件所依赖的库文件
 PAM是一套适用于Linux的身份验证共享库系统,它为系统中的应用程序或服务提供动态身份验证模块支持 
 libedit库编辑程序
  • 安装
代码语言:javascript复制
make clean(清缓存,尤其是在configure失败时)
make -j4
make install

用make -j带一个参数,可以把项目进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源

  • 修改配置文件,包括端口,和权限 vim /opt/ssh/etc/sshd_config (进入更改14行端口至222 ) … …
  • 测试配置文件是否正确 /opt/ssh/sbin/sshd -t -f /opt/ssh/etc/sshd_config
  • 其他主机测试端口222连通性
  • 将端口222改回22,再次测试连通性
  • 查看新安装的ssh版本 /opt/ssh/bin/ssh -V
  • 重启本机的ssh服务

对其他主机的批量化操作

  • 备份刚刚更新好的ssh配置文件(自定义的那个/opt/ssh) 新建目录 mkdir -r /tmp/sshetc 备份 cp /opt/ssh/etc/* /tmp/sshetc/
  • 打包ssh所有文件,到目录/opt下(以便发送给新机安装ssh) tar -zcvf /opt/ssh/ssh版本号.tar.gz /opt/ssh
  • 打包ssh所有文件除了etc,到目录/opt下(以便发送给已有ssh服务的机器进行升级) 移除etc(丢到/tmp) mv /opt/ssh/etc/* /tmp tar -zcvf /opt/ssh版本号x.tar.gz /opt/ssh (x表示没有配置文件)
  • 查看两个压缩包 ls -l /opt -rw-r–r–. 1 root root 2449290 3月 11 15:31 ssh89.tar.gz -rw-r–r–. 1 root root 2425063 3月 11 15:31 ssh89x.tar.gz
  • 修改ssh服务端口设置,重启服务 vim /etc/ssh/sshd_config
  • 关闭防火墙 systemctl stop firewalld
  • 关闭selinux(getenforce可以查看linux状态) setenforce 0
  • 重启sshd #systemctl restart sshd
  • 将之前移走的配置文件还原 mv /tmp/sshetc/* /opt/ssh/etc/ systemctl restart sshd

学到两个typora快捷键

代码语言:javascript复制
选中一段文字ctrl shift k  代码块

ctrl [ 减少缩进
ctrl ] 增加缩进

BBS-GO的安装 linux 宝塔面板【进了解】

【转载】

BBS-GO是基于Golang编写的,但是安装有一些困难,我自己也是走了一些弯路,感谢其他大神的教程:史上最全bbs-go安装教程 和 基于golang的开源论坛bbs-go的搭建步骤, 这里是基于Ubuntu的V**进行安装,测试成功的。

首先下载go语言开发包

https://golang.google.cn/dl/

代码语言:javascript复制
sodo wget -c https://golang.org/dl/go1.15.6.linux-amd64.tar.gz
tar xvf go1.15.6.linux-amd64.tar.gz

这时候,你会得到一个go的文件夹,下面我们要把go的权限设置为root,并且拷贝文件到 /usr/local

代码语言:javascript复制
    sudo chown -R root:root ./go
    sudo mv go /usr/local

之后需要设置Go Paths

代码语言:javascript复制
sudo nano ~/.profile

在文件的末尾添加下列信息,Ctrl o 保存, Ctrl x 退出

代码语言:javascript复制
export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
source ~/.profile

然后确认下Go的版本

代码语言:javascript复制
go version

紧接着,我们需要安装必要的包

代码语言:javascript复制
sudo apt update
sudo apt install npm git
宝塔界面 数据库 NGINX的安装

使用宝塔的一键安装,主要是为了方便我这样子的小白吧。这里需要宝塔安装Nginx PHP Mysql。Nginx主要是为了反向端口,Mysql是因为BBS-GO需要,而PHP的话,这里我要phpmyadmin来导入初始的数据。先安装宝塔面板。(更多的安装信息可以查看这里)

代码语言:javascript复制
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

安装完之后,你会获得相关信息,怎么通过宝塔的面板安装Nginx PHP Mysql我就不再赘述。

下面来正式开始安装BBS-GO了。首先是获取源代码

代码语言:javascript复制
git clone https://github.com/mlogclub/mlog.git

下载之后,你可以看到mlog的目录,进入到目录里面。BBS-GO有两个模块,一个是Server,一个是网站。

首先我们先配置Server,注意Go的版本不要低于1.15. 拷贝一份配置文件

代码语言:javascript复制
cp ./mlog/server/bbs-go.example.yaml ./mlog/server/bbs-go.yaml

修改配置文件,这里是修改域名

代码语言:javascript复制
BaseUrl: https://mlog.club # 网站域名

修改数据库信息,这里我用宝塔已经建好数据了

代码语言:javascript复制
MySqlUrl: username:password@tcp(localhost:3306)/bbsgo_db?charset=utf8mb4&parseTime=True&loc=Local

修改附件的上传方式

代码语言:javascript复制
  # 启用上传方式
  Enable: local
  # 本地文件上传
  Local:
    Host: https://img.zaicanada.com/ # 上传文件域名
    Path: /www/wwwroot/img.zaicanada.com # 上传目录

配置修改完成了之后,这里导入一些默认的数据,这时候,小白的我们就需要宝塔的PHPMyAdmin了。官方的参考信息

代码语言:javascript复制
CREATE TABLE `t_user`
(
    `id`                 bigint(20) NOT NULL AUTO_INCREMENT,
    `username`           varchar(32)         DEFAULT NULL,
    `email`              varchar(128)        DEFAULT NULL,
    `email_verified`     tinyint(1) NOT NULL DEFAULT '0',
    `nickname`           varchar(16)         DEFAULT NULL,
    `avatar`             text,
    `background_image`   text,
    `password`           varchar(512)        DEFAULT NULL,
    `home_page`          varchar(1024)       DEFAULT NULL,
    `description`        text,
    `score`              bigint(20) NOT NULL,
    `status`             bigint(20) NOT NULL,
    `topic_count`        bigint(20) NOT NULL,
    `comment_count`      bigint(20) NOT NULL,
    `roles`              text,
    `type`               bigint(20) NOT NULL,
    `forbidden_end_time` bigint(20) NOT NULL DEFAULT '0',
    `create_time`        bigint(20)          DEFAULT NULL,
    `update_time`        bigint(20)          DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `username` (`username`),
    UNIQUE KEY `email` (`email`),
    KEY `idx_user_score` (`score`),
    KEY `idx_user_status` (`status`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- 初始化用户数据(用户名:admin、密码:123456)
INSERT INTO t_user (`id`, `username`, `nickname`, `avatar`, `email`, `password`, `status`, `create_time`, `update_time`,
                    `roles`, `type`, `description`, `topic_count`, `comment_count`, `score`)
SELECT 1,
       'admin',
       'bbsgo站长',
       '',
       'a@example.com',
       '$2a$10$ofA39bAFMpYpIX/Xiz7jtOMH9JnPvYfPRlzHXqAtLPFpbE/cLdjmS',
       0,
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000),
       'owner',
       0,
       '轻轻地我走了,正如我轻轻的来。',
       0,
       0,
       0
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_user` WHERE `id` = 1);


-- 初始化话题节点
CREATE TABLE `t_topic_node`
(
    `id`          bigint(20) NOT NULL AUTO_INCREMENT,
    `name`        varchar(32) DEFAULT NULL,
    `description` longtext,
    `sort_no`     bigint(20)  DEFAULT NULL,
    `status`      bigint(20) NOT NULL,
    `create_time` bigint(20)  DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`),
    KEY `idx_sort_no` (`sort_no`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

INSERT INTO `t_topic_node` (`id`, `name`, `description`, `sort_no`, `status`, `create_time`)
SELECT 1, '默认节点', '', 0, 0, (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_topic_node` WHERE `id` = 1);

-- 初始化系统配置表
CREATE TABLE `t_sys_config`
(
    `id`          bigint(20)   NOT NULL AUTO_INCREMENT,
    `key`         varchar(128) NOT NULL,
    `value`       text,
    `name`        varchar(32)  NOT NULL,
    `description` varchar(128) DEFAULT NULL,
    `create_time` bigint(20)   NOT NULL,
    `update_time` bigint(20)   NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `key` (`key`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- 初始化系统配置数据
INSERT INTO t_sys_config(`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteTitle',
       'bbs-go演示站',
       '站点标题',
       '站点标题',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteTitle');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteDescription',
       'bbs-go,基于Go语言的开源社区系统',
       '站点描述',
       '站点描述',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteDescription');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteKeywords',
       'bbs-go',
       '站点关键字',
       '站点关键字',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteKeywords');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteNavs',
       '[{"title":"首页","url":"/"},{"title":"话题","url":"/topics"},{"title":"动态","url":"/tweets"},{"title":"文章","url":"/articles"}]',
       '站点导航',
       '站点导航',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteNavs');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'defaultNodeId',
       '1',
       '默认节点',
       '默认节点',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'defaultNodeId');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'tokenExpireDays',
       '365',
       '用户登录有效期(天)',
       '用户登录有效期(天)',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'tokenExpireDays');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'scoreConfig',
       '{"postTopicScore":1,"postCommentScore":1,"checkInScore":1}',
       '积分配置',
       '积分配置',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'scoreConfig');

这时候,已经可以把Server端运行起来了,输入

代码语言:javascript复制
go run main.go

下面是设置Site模块

首先是安装依赖包,进入目录./site 后,执行 npm install

此外还需要修改./mlog/site/nuxt.config.js,配置后台服务的 api 访问地址:

代码语言:javascript复制
  proxy: {
    '/api/':
      process.env.NODE_ENV === 'production'
        ? 'https://tie.zaicanada.com'
修改完之后,执行 npm run dev
则启动前端服务,服务端口 3000

访问 http://IP:3000 当然到了这里还是不能算是完成品,这时候回到宝塔的界面。我这里添加了两个域名 tie.zaicanada.com 作为论坛的域名,img.zaicanada.com 作为本地图片的域名

安装宝塔

( Centos 8官方已经停止支持、请更换Centos7系统或Centos 8 Stream系统安装宝塔 )

Centos安装命令:

wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh


source命令

source命令相当于(.)命令——执行

  • source命令也称为“点命令”,也就是一个点符号(.)
  • source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。

用法:

source filename 或 . filename

另外:

source命令除了上述的用途之外,还有一个另外一个用途。在对编译系统核心时常常需要输入一长串的命令,如:

代码语言:javascript复制
make mrproper

make menuconfig

make dep

make clean

make bzImage

…………

如果把这些命令做成一个文件,让它自动顺序执行,对于需要多次反复编译系统核心的用户来说会很方便,而用source命令就可以做到这一点,它的作用就是把一个文件的内容当成shell来执行,先在linux的源代码目录下(如/usr/src/linux-2.4.20)建立一个文件,如 make_command,在其中输入以下内容:

代码语言:javascript复制
make mrproper &&
make menuconfig &&
make dep &&
make clean &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImage /boot/vmlinuz_new &&
cp System.map /boot &&
vi /etc/lilo.conf &&
lilo -v

文件建立好之后,每次编译核心的时候,只需要在/usr/src/linux-2.4.20下输入:

source make_command

即可,如果你用的不是lilo来引导系统,可以把最后两行去掉,配置自己的引导程序来引导内核。

顺便补充一点,&&命令表示顺序执行由它连接的命令,但是只有它之前的命令成功执行完成了之后才可以继续执行它后面的命令。

~目录和/目录的区别

pwd可以打印当前工作目录

代码语言:javascript复制
* /就是根目录
* ~是指当前用户的家目录
	root的~就表示/root
	tim的~就表示/home/tim

而cd命令不加任何路径可以直接进入~

VMware——ESXi图形化界面管理(抽空了解以下)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168458.html原文链接:https://javaforall.cn

0 人点赞