linux常用命令与配置

linux常用命令与配置

screen

screen -S screen_name
# 新建一个名为screen_name的screen
screen -ls
# 显示已创建的screen终端
screen -r xxx
# 连接 screen_id 为 xxx 或者名字为 xxx 的screen 终端
按住Ctrl,先按A键,再按D键
# 退出screen会话

screen 连接不上,提示“There is no screen to be resumed matching xxxxx.” :

screen -D -r xxxx
# 删除前一用户再登录

systemctl

systemctl start xxx    # 启动xxx服务
systemctl restart xxx  # 重启xxx服务(会重启服务,造成服务一瞬间的中断)
systemctl status xxx   # 查看xxx服务的运行状态
systemctl stop xxx     # 停止xxx服务
systemctl reload xxx   # 重载xxx服务(会重新加载配置文件,服务不会中断)
systemctl enable xxx   # 激活xxx服务的开机启动(当然还有disable)

附上常用的重启命令:

systemctl restart sshd.service  # 重启ssh服务

systemctl 新增 service 服务

案例:minio部署

  1. 创建服务模板:(位于 /usr/lib/systemd/system/xxx.service

    [Unit]
    Description=服务概述
    Documentation=服务文档
    # Requires=服务在此 daemon 启动后才能够启动
    
    [Service]
    WorkingDirectory=/data
    # 工作目录
    ExecStart=/path/to/xxx.sh
    # 执行此 daemon 的指令或脚本程序
    
    Restart=on-failure
    # 非正常退出时重启
    RestartSec=5
    # 设置在重启服务 (Restart) 前暂停多长时间,默认 100ms,上面设置为 5s
    
    [Install]
    WantedBy=multi-user.target
    # 设置服务在开机时启动
  2. 给予服务和脚本程序运行权限

    chmod +x /usr/lib/systemd/system/xxx.service
    chmod +x /path/to/xxx.sh
  3. 重载服务,并启动 xxx.service 和 增加开机执行权限

    systemctl daemon-reload
    systemctl start xxx
    systemctl enable xxx
  4. 查看运行状态

    systemctl status xxx.service

参考:Systemd 入门教程:实战篇 - 阮一峰的网络日志 (ruanyifeng.com)

Git(建立仓库并将文件部署到指定文件夹)

安装

# 检查git是否安装
git -v
# 若未安装则安装git
#ubuntu
sudo apt-get install git
#centos
sudo yum install -y git 

账户配置

考虑到安全性,新建一个名为 git 的用户,专门用于执行git的操作:

# 添加用户名为git
sudo adduser git

注:这里也可以使用下面的命令来建立用户,区别在于是否设置密码和在 /home 目录下会自动创建同名文件夹:

# 不会建立同名文件夹
useradd git
passwd git

然后配置git账户的公钥文件(用于使用 SSH 协议提交代码),可以直接将公钥导入(粘贴)服务器的 /home/git/.ssh/authorized_keys 文件中(没有目录和文件就新建),或者在 Windows 下的 Git Bash 进行以下操作:

ssh-copy-id -i ~/.ssh/id_rsa.pub git@server_ip_or_domain

配置好后就可以尝试直接使用 SSH 登录 git 账户,如果可以成功登录,则说明配置成功。
出于安全性考虑,需禁用 git 用户的 shell 登录权限,只能使用 git 命令,这个可以通过编辑 /etc/passwd 文件完成。找到最后一行:(如果 git 用户不是最后新建的则找到 git 所在行)

git:x:10xx:10xx::/home/git:/bin/bash

改为: ( /usr/bin/git-shell 为你的 git-shell 所在的位置,珂以通过 which git-shell 查看)

git:x:10xx:10xx::/home/git:/usr/bin/git-shell

这样,git 用户就只能使用 git 命令,但是一登录就会自动退出,就像下面这样:

fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to server_ip closed.

仓库配置(新建仓库参考)

执行以下操作以创建仓库:(按照惯例,仓库文件夹都以 .git 结尾,仓库所在的各层级文件夹最好都拥有git用户读写权限,因为在 root 用户文件夹下新建了一个仓库一直没权限)

cd git_dir # 移动到git仓库所在文件夹
mkdir xxx & cd xxx # 欲新建文件夹,则新建并进入
git init --bare blog.git # 创建一个名为blog.git的裸的仓库文件夹

然后,把 owner 改为 git

然后利用 post-receive 实现自动化部署:

cd blog.git/hooks
vi post-receive

输入以下内容:

#!/bin/sh
git --work-tree=部署文件夹 --git-dir=git仓库文件夹 checkout -f

然后配置权限(可执行权限和 git 用户的读写权限):

chmod +x post-receive 
chown -R git:git /home/git/repos/blog.git 

ssh登录报错

有的时候,使用 ssh 登录时会出现 Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 警告,