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服务

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) 警告,