分类: linux

  • supervisord 执行配置环境变量

    Supervisord 是一个进程管理工具,它可以用来启动、重启、停止进程,并且可以监控进程,当进程异常退出时自动重启。

    要在 Supervisord 中执行配置环境变量,你需要编辑 Supervisord 的配置文件。这个文件通常被命名为 supervisord.conf 或者在 Supervisor 的配置目录中。

    在 supervisord.conf 文件中,你可以为每个程序单独配置环境变量。这些环境变量将会在该程序启动时被设置。

    以下是一个配置环境变量的例子:

    [program:myapp]
    command=/usr/bin/myapp
    environment=ENV1="value1",ENV2="value2"
    user=myuser
    

    在这个例子中,程序 myapp 将会接收环境变量 ENV1 和 ENV2。这些环境变量的值分别是 value1 和 value2

    如果你需要为所有的程序设置全局环境变量,你可以在 [supervisord] 部分设置 environment 选项:

    [supervisord]
    environment=ENV1="value1",ENV2="value2"
    
    

    在这种情况下,所有的子进程都会接收这些环境变量。

    记得在做完更改后,需要重启 Supervisord 以使配置生效:

    sudo supervisorctl reread
    sudo supervisorctl update
    sudo supervisorctl restart
  • 在Docker中轻松运行FFmpeg:命令与文档指南

    随着多媒体内容在互联网上的日益普及,视频处理工具变得越来越重要。FFmpeg作为一款强大的开源多媒体处理工具,广泛应用于视频编解码、转换、流处理等场景。为了在Docker环境中轻松运行FFmpeg,本文将为您提供详细的启动命令和文档指南。

    首先,确保您已经成功安装了Docker。您可以通过运行 docker version命令来验证安装是否成功。接下来,在Docker Hub上搜索ffmpeg关键字,找到相应的镜像。这里,我们推荐使用jrottenberg/ffmpeg镜像,因为它提供了丰富的功能和稳定的性能。

    一、拉取FFmpeg镜像

    在终端中运行以下命令,从Docker Hub拉取 jrottenberg/ffmpeg镜像:

    1. docker pull jrottenberg / ffmpeg

    二、运行FFmpeg容器

    使用以下命令启动一个FFmpeg容器。这里,我们将 /path/to/input/path/to/output分别指定为宿主机上的输入和输出文件夹路径。<ffmpeg command>是您要执行的FFmpeg具体命令,根据实际需求进行替换。

    1. docker run - it -- rm - v / path / to / input :/ input - v / path / to / output :/ output jrottenberg / ffmpeg < ffmpeg command >

    例如,如果您想将输入文件夹中的 myfile.avi转换为VCD格式的视频文件,并保存到输出文件夹中,可以使用以下命令:

    1. docker run - it -- rm - v / path / to / input :/ input - v / path / to / output :/ output jrottenberg / ffmpeg - i / input / myfile . avi - target vcd / output / vcd . mpg

    三、FFmpeg命令参数详解

    FFmpeg支持丰富的命令参数,以满足各种视频处理需求。以下是一些常用的命令参数及其说明:

    • -f fmt:指定输出文件的格式。
    • -I filename:指定输入文件。
    • -y:覆盖输出文件。
    • -t duration:设置记录时间,格式为hh:mm:ss[.xxx]
    • -ss position:搜索到指定的时间,格式为[-]hh:mm:ss[.xxx]
    • -title string:设置标题。
    • -author string:设置作者。
    • -copyright string:设置版权信息。
    • -comment string:设置评论。
    • -target type:设置目标文件类型(如vcd、svcd、dvd),所有的格式选项(比特率、编解码以及缓冲区大小)将自动设置。

    四、验证处理结果

    运行FFmpeg命令后,您可以使用本地的播放器或其他工具来验证处理结果是否符合预期。如果一切正常,您应该能在输出文件夹中看到转换后的视频文件。

    总结

    通过本文的介绍,您应该已经了解了如何在Docker中轻松运行FFmpeg,并掌握了相关的命令和文档。FFmpeg作为一款强大的多媒体处理工具,能够帮助您轻松处理各种视频任务。希望本文对您有所帮助,如有任何疑问或建议,请随时联系我们。

  • Linux nohup 命令

    nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

    nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

    使用权限

    所有使用者

    语法格式

     nohup 
    Command [ Arg  ] [ & ]

    参数说明:

    Command:要执行的命令。

    Arg:一些参数,可以指定输出文件。

    &:让命令在后台执行,终端退出后命令仍旧执行。

    实例

    以下命令在后台执行 root 目录下的 runoob.sh 脚本:

    nohup 
    /
    root
    /
    runoob
    .
    sh 
    &

    在终端如果看到以下输出说明运行成功:

    appending output to nohup
    .
    out

    这时我们打开 root 目录 可以看到生成了 nohup.out 文件。

    如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:

    ps 
    -
    aux 
    |
     grep 
    "runoob.sh"

    参数说明:

    • a : 显示所有程序
    • u : 以用户为主的格式来显示
    • x : 显示所有程序,不区分终端机

    另外也可以使用 ps -def | grep "runoob.sh" 命令来查找。

    找到 PID 后,就可以使用 kill PID 来删除。

    kill 
    -
    9  进程号
    PID

    以下命令在后台执行 root 目录下的 runoob.sh 脚本,并重定向输入到 runoob.log 文件:

    nohup 
    /
    root
    /
    runoob
    .
    sh 
    >
     runoob
    .
    log 
    2
    >&
    1 &
    

    2>&1 解释:

    将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。

    • 0 – stdin (standard input,标准输入)
    • 1 – stdout (standard output,标准输出)
    • 2 – stderr (standard error,标准错误输出)
  • Minio Windows 安装

    MinIO Server

    PS> Invoke-WebRequest -Uri "https://dl.minio.org.cn/server/minio/release/windows-amd64/minio.exe" -OutFile "C:\minio.exe"
    PS> setx MINIO_ROOT_USER admin
    PS> setx MINIO_ROOT_PASSWORD password
    PS> C:\minio.exe server F:\Data --console-address ":9001"

    MinIO Client

    PS> Invoke-WebRequest -Uri "https://dl.minio.io/client/mc/release/windows-amd64/mc.exe" -OutFile "C:\mc.exe"
    C:\mc.exe alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD
  • Minio Linux下载安装

    MinIO Server

    wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio 
    或 wget https://gitee.com/houlijiang/common/raw/master/minio-erver-linux-amd64 chmod +x minio MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"

    MinIO Client

    wget https://dl.minio.org.cn/client/mc/release/linux-amd64/mc 
    或 wget https://gitee.com/houlijiang/common/raw/master/mc-client-linux-amd64 chmod +x mc mc alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD
  • Minio 挂在驱动minfs

    1. rpm 

    //  RPM 包下载
    yum -y install http://dl.jxit.net.cn/jxfiles/minio/minfs-0.0.20170226202056-1.x86_64.rpm
    
    

    2. 配置

       创建 config.json  在目录  /etc/minfs 内容如下:

    {"version":"1","accessKey":"Q3AM3UQ867SPQQA43P2F","secretKey":"zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"}
    

      进行磁盘挂载/etc/fstab,类似如下:

    https://play.minio.io:9000/mybucket /mnt/mounted/mybucket minfs defaults,cache=/tmp/mybucket 0 0
    mount /mnt/mounted/mybucket
    
  • Rclone 使用教程

    Rclone是一个命令行程序,用于管理云存储上的文件。他打包了各大供应商云存储的接口提供统一的访问界面。rclone支持40多种云存储产品,包括对象存储、企业和消费者文件存储、服务以及标准传输协议。Rclone符合unix POSIX规范,支持于常见的shell工具,比如rsync、cp、 mv、mount、ls、ncdu、tree、rm 和cat等交互,Rclone使用我们耳闻能熟的语法,支持shell管道,支持—dry-run保护,同时为了保护数据的可靠性,Rclone可保留时间戳和始终进行文件验证校验和。Rclone多种文件传输协议,支持SFTP,HTTP,WebDAV,FTP和DLNA。Rclone是一个成熟的开源软件,最初受rsync的启发并采用Golang编写。其文档和社区也都非常好,提供广泛和友好的使用用例。

    设置

    命令 说明
    rclone config 添加、删除、管理网盘等操作
    rclone config file 显示配置文件的路径
    rclone config show 显示配置文件信息
    root@SunPma:~# rclone config
    Current remotes:
    
    Name                 Type
    ====                 ====
    DB                 dropbox
    GD                 drive
    
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    e/n/d/r/c/s/q>

    语法

    # 本地到网盘
    rclone [功能选项] <本地路径> <配置名称:路径> [参数] [参数]
    
    # 网盘到本地
    rclone [功能选项] <配置名称:路径> <本地路径> [参数] [参数]
    
    # 网盘到网盘
    rclone [功能选项] <配置名称:路径> <配置名称:路径> [参数] [参数]
    
    # [参数]为可选项

    示例

    # 复制到网盘,并显示实时传输进度,设置并行上传数为8
    
    rclone copy -P /home/SunPma GD:/home/SunPma --transfers=8
    
    # 如果需要服务端对服务端的传输可加以下参数(不消耗本地流量)
    
    rclone copy 配置名称:网盘路径 配置名称:网盘路径 --drive-server-side-across-configs

    功能

    命令 说明
    rclone copy 复制
    rclone move 移动,如果要在移动后删除空源目录,加上 –delete-empty-src-dirs 参数
    rclone sync 同步:将源目录同步到目标目录,只更改目标目录
    rclone size 查看网盘文件占用大小
    rclone delete 删除路径下的文件内容
    rclone purge 删除路径及其所有文件内容
    rclone mkdir 创建目录
    rclone rmdir 删除目录
    rclone rmdirs 删除指定环境下的空目录。如果加上 –leave-root 参数,则不会删除根目录
    rclone check 检查源和目的地址数据是否匹配
    rclone ls 列出指定路径下的所有的文件以及文件大小和路径
    rclone lsl 比上面多一个显示上传时间
    rclone lsd 列出指定路径下的目录
    rclone lsf 列出指定路径下的目录和文件

    参数

    命令 说明
    -n = –dry-run 测试运行,查看Rclon在实际运行中会进行哪些操作
    -P = –progress 显示实时传输进度,500mS刷新一次,否则默认1分钟刷新一次
    –cache-chunk-size 5M 块的大小,默认5M越大上传越快,占用内存越多,太大可能会导致进程中断
    –onedrive-chunk-size 100M 提高OneDrive上传速度适用于G口宽带服务器(默认为320KB)
    –drive-chunk-size 64M 提高Google Drive上传速度适用于G口宽带服务器(默认为8M)
    –cache-chunk-total-size SizeSuffix 块可以在本地磁盘上占用的总大小,默认10G
    –transfers=N 并行文件数,默认为4
    –config string 指定配置文件路径,string为配置文件路径
    –ignore-errors 跳过错误
    –size-only 根据文件大小校验,不校验hash
    –drive-server-side-across-configs 服务端对服务端传输

    日志

    有4个级别的日志记录:ERROR NOTICE INFO DEBUG
    默认情况下Rclon将生成ERROR NOTICE日志

    命令 说明
    -q rclone将仅生成ERROR消息
    -v rclone将生成ERROR NOTICE INFO 消息
    -vv rclone 将生成ERROR NOTICE INFO DEBUG 消息
    –log-level LEVEL 标志控制日志级别

    输出日志到文件
    使用--log-file=FILE选项rclone会将Error Info Debug消息以及标准错误重定向到FILE
    这里的FILE是你指定的日志文件路径

    过滤

    命令 说明
    –exclude 排除文件或目录
    –include 包含文件或目录
    –filter 文件过滤规则,相当于上面两个选项的其它使用方式。包含规则以+开头,排除规则以-开头

    文件类型过滤
    例如--exclude "*.bak" --filter "- *.bak"排除所有bak文件
    例如--include "*.{png,jpg}" --filter "+ *.{png,jpg}"包含所有pngjpg文件,排除其他文件
    例如--delete-excluded删除排除的文件。需配合过滤参数使用,否则无效
    目录过滤
    目录过滤需要在目录名称后面加上/否则会被当做文件进行匹配
    /开头只会匹配根目录(指定目录下),否则匹配所目录,这同样适用于文件
    --exclude ".git/"排除所有目录下的.git目录
    --exclude "/.git/"只排除根目录下的.git目录
    --exclude "{Video,Software}/"排除所有目录下的VideoSoftware目录
    --exclude "/{Video,Software}/"只排除根目录下的VideoSoftware目录
    --include "/{Video,Software}/**"仅包含根目录下的VideoSoftware目录的所有内容
    大小过滤
    默认大小单位为kBytes但可以使用k MG后缀
    --min-size过滤小于指定大小的文件。比如--min-size 50表示不会传输小于50k的文件。
    --max-size过滤大于指定大小的文件。比如--max-size 1G表示不会传输大于1G的文件。
    实际使用中发现大小过滤两个选项不能同时使用
    过滤规则文件
    --filter-from <规则文件>从文件添加包含/排除规则
    比如--filter-from filter-file.txt
    过滤规则文件示例:

    - secret*.jpg
    + *.jpg
    + *.png
    + file2.avi
    - /dir/Trash/**
    + /dir/**
    - *

    环境变量

    rclone中的每个选项都可以通过环境变量设置。环境变量的名称可以通过长选项名称进行转换,删除--前缀,更改-_大写并添加前缀RCLONE_环境变量的优先级会低于命令行选项,即通过命令行追加相应的选项时会覆盖环境变量设定的值。
    比如设置最小上传大小--min-size 50使用环境变量是RCLONE_MIN_SIZE=50当环境变量设置后,在命令行中使用--min-size 100那么此时环境变量的值就会被覆盖
    常用环境变量

    命令 说明
    RCLONE_CONFIG 自定义配置文件路径
    RCLONE_CONFIG_PASS 若 rclone 进行了加密设置,把此环境变量设置为密码,可自动解密配置文件
    RCLONE_RETRIES 上传失败重试次数,默认 3 次
    RCLONE_RETRIES_SLEEP 上传失败重试等待时间,默认禁用,单位s、m、h分别代表秒、分钟、小时
    CLONE_TRANSFERS 并行上传文件数
    RCLONE_CACHE_CHUNK_SIZE 块的大小,默认5M
    RCLONE_CACHE_CHUNK_TOTAL_SIZE 块可以在本地磁盘上占用的总大小,默认10G
    RCLONE_IGNORE_ERRORS=true 跳过错误

     #rclone

  • Linux程序前台后台切换

    1、在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行

    root@Ubuntu$ ./tcpserv01 &

    2、如果程序正在前台运行,可以使用 Ctrl+z 选项把程序暂停,然后用 bg %[number] 命令把这个程序放到后台运行,摁Ctrl+z,然后在最后一行加上bg %number

    3、对于所有运行的程序,我们可以用jobs –l 指令查看

    [kettle@4 data-integration]$ jobs -l

    4、也可以用 fg %[number] 指令把一个程序掉到前台

    cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ fg %1
    ./tcpserv01

    5、也可以直接终止后台运行的程序,使用 kill 命令

    cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ kill %1

    二、fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令

    一、&
    加在一个命令的最后,可以把这个命令放到后台执行,如
    watch -n 10 sh test.sh & #每10s在后台执行一次test.sh脚本

    二、ctrl + z
    可以将一个正在前台执行的命令放到后台,并且处于暂停状态。


    三、jobs
    查看当前有多少在后台运行的命令
    jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。


    四、fg
    将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。


    五、bg
    将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。


    六、kill
    法子1:通过jobs命令查看job号(假设为num),然后执行kill %num
    法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
    前台进程的终止:Ctrl+c


    七、nohup
    如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。关闭中断后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)

    ps -aux | grep “test.sh” #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分

    八、查看nohup.out的日志

    linux 下:

    tail -fn 50 nohup.out
  • 一键安装PHP swoole 环境

     curl -sS https://gitee.com/houlijiang/common/raw/master/php-install.sh | sh -

    卸载:

    完全卸载删除PHP

    查看全部的PHP软件包,命令:rpm -qa|grep php
    实例如下:

    [root\@xxx\~]
    # rpm -qa|grep php
    php-cli-5.4.16-46.el7.x86\_64
    php-common-5.4.16-46.el7.x86\_64
    php-5.4.16-46.el7.x86\_64
    

    找到PHP的软件包后,我们使用命令:rpm -e 软件包名的方式一个个删除即可完全删除。

    注意:由于某些PHP软件包被其他PHP软件包所依赖,删除顺序不同,回到值无法删除,例如上面的实例中 php-cli-5.4.16-46.el7.x86_64 被其他的PHP软件包所需要,如果先执行命令:rpm -e php-cli-5.4.16-46.el7.x86_64会删除不了,所以执行删除顺序为:

    rpm -e php-5.4.16-46.el7.x86_64
    rpm -e php-cli-5.4.16-46.el7.x86_64
    rmp -e php-common-5.4.16-46.el7.x86_64

    删除完毕后,可以使用命令php -v检查下是否还会返回版本信息,如果没有提示,说明已经删除了。

    综上,先使用命令rpm -qa|grep php检查全部的PHP软件包,然后再使用命令rpm -e 软件包名删除PHP软件包。

  • liunx 配置固定ip

    #在/etc/sysconfig/network-scripts/ifcfg-网卡名 文件中配置
    #例
    [root@zbx-server /]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=eth0
    UUID=47c875bd-32d2-4a6a-b66a-4bbbf491a5cf
    DEVICE=eth0
    ONBOOT=yes
    IPADDR=172.17.18.223
    GATEWAY=172.17.19.254
    NETMASK=255.255.254.0
    DNS1=172.16.0.102
    DNS2=172.16.0.201
    
    systemc restart network   #重启网