linux开坑记--常用的3个命令

为了避免文章选题困难症,前段时间开了一个Docker系列坑,目前还没有完结,今天打算再来开一个Linux系列的坑,聊聊Linux日常开发命令,希望大家喜欢。

打包归档工具tar

首先要说的是打包归档工具。tar的主要作用将多个文件或文件夹保存单个文件,并且能保留文件属性,比如所有者、权限等。tar的全称是tape archive 磁带备份工具。

我们经常看到扩展名为.tar或者tgz的文件,它们各自表示普通的tar包和被gzip压缩过的tar包。

最常用的方式就是:打包,提取操作。

tar -cvf output.tar file1 file2 folder1 # 打包数据
tar -xvf output.tar # 提取数据
其中参数 -c表示create创建,-f 表示filename指定文件名,-v 表示verbose更多细节。
x 抽取归档
其中数据打包备份过程我们会加入一些压缩参数来进行精简数据的大小,有关具体详细细节,请看下图。

系统备份工具rsync

系统备份是系统管理员日常必备的工作之一,其中rsync可以对不同位置的文件目录进行同步,利用差异计算和压缩技术来最小化数据传输量。

我在之前的文章就讲到过,系统备份工具rsync,除了系统备份还有基于版本控制的git命令,大家可以参看下我之前的备份工具文章 我常用的4个备份工具,这就不多说了。

进程管理工具supervisor

这个严格来说不是Linux自带命令,但是由于它比较通用,可以用来启动任意进程,用的比较多,这里也放进来了。

Supervisor是基于Python的进程管理工具,可以帮助我们进行服务的重启,停止。

它由两个部分组成:

  1. supervisord:supervisor后台程序,负责启动所管理的进程
  2. supervisorctl:命令行工具,直接重启对应服务,supervisorctl stop/start/restart your_program_name

安装:

sudo pip install supervisor
echo_supervisord_conf > /etc/supervisord.conf # 添加配置文件
supervisord -c /etc/supervisord.conf # 启动指定配置

为了方面大家理解,我给一个简单的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[supervisord]
nodaemon=true
logfile=/data/log/supervisord.log
pidfile=/var/run/supervisord.pid
[program:your_app_name]
process_name=app%(process_num)s
command=python server.py --port=%(process_num)s
directory=/yourdir ;执行命令时切换工作目录
user=sitin ; 使用sitin来启动进程
stopsignal=HUP
autostart = true
autorestart=true  ;自动重启
redirect_stderr = true  ;重定向日志
stdout_logfile = /data/log/stdout-%(program_name)s.log
logfile_maxbytes=300MB
logfile_backups=5
numprocs=3  ;启动3个 8080,8081,8082
numprocs_start=8080 ; 重8080开始

更多的大家自己去看文档,我就不进行讲解了。我使用supervisor之后的效果图大概是这样,下面这张图不是上面的配置图。

综上:上面就是我要介绍的3个命令,由于之前介绍过rsync,就只有tar,supervisor。

细心的同学可能已经发现了,这几个命令其实也是一个完整的代码上线流程。

主要是打包压缩,上传备份,进程管理三个过程:

  1. 代码要发布上线首先就是进行打包压缩,使用tar工具。
  2. 打包之后,我们需要对数据代码进行备份上传到服务器,需要用rsync工具。
  3. 代码上传到服务器上之后,我们需要对我们服务进行管理,需要用到supervisor。

通过这三个命令,能非常方便解决日常应用的开发上线问题,没有使用的同学可以用起来了,今天我们的内容就先到这儿了。

Linux日常命令使用,同Docker容器化一样我会以一个系列进行分享,今天是第一篇,后面我将持续分享更多内容,从Linux日常命令使用到shell脚本编程,欢迎大家持续进行关注。

sitin wechat
扫一扫上面的二维码,订阅我的博客!