Blog

  • gsutil

    gsutil versioning get gs://xxx-infra

    gs://xxx-infra: Suspended

    如果没开启,打开 versioning,Enabling Object Versioning increases storage costs

    gsutil versioning set on gs://xxx-infra

    gsutil versioning get gs://xxx-infra

    gs://xxx-infra: : Enabled

    查看所有版本的所有文件

    gsutil ls -a gs://xxx-infra

    恢复某一个版本的文件

    gsutil cp gs://xxx-infra/subnet_list.json#1607987168023139 gs://xxx-infra/subnet_list.json

  • postgresql

    postgresql service local

    https://hub.docker.com/_/postgres

    docker run --name postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
    docker exec -it postgres /bin/bash
    

    test connection

    pg_isready -d  -h  -p  -U 
    pg_isready -h 127.0.0.1 -p 5432 -U root
    

    apt install postgresql-client-13

    find configuration file

    psql -U postgres -c 'SHOW config_file'
    

    print time

    psql -U postgres -c "select (to_char(CURRENT_TIMESTAMP ,'yyyy-MM-dd HH24:MI')||':00')::timestamp"
    
  • git 根据条件计算中间 commit 数量

    https://stackoverflow.com/a/11657647/3672812

    在 feature 分支下

    git rev-list --count HEAD ^master
    
    13
    
  • haproxy

    检查配置

    haproxy -c -V -f /etc/haproxy/haproxy.cfg
    
  • kafka-console-consumer 对 topic 测试

    To listen for messages on a topic:

                                                                                    
    kafka-console-consumer --bootstrap-server kafka:9092 --topic test1 --from-beginning
    

    To stop the listener session above press: Ctrl+C

    To start an interactive message producer session:

    kafka-console-producer --broker-list kafka-headless:9092 --topic test1
    

    To create a message in the above session, simply type the message and press “enter”
    To end the producer session try: Ctrl+C

    If you specify “zookeeper.connect” in configurationOverrides, please replace “kafka-zookeeper:2181” with the value of “zookeeper.connect”, or you will get error.

  • mktemp 生成临时文件或目录

    Usage: mktemp [OPTION]... [TEMPLATE]
    Create a temporary file or directory, safely, and print its name.
    TEMPLATE must contain at least 3 consecutive 'X's in last component.
    If TEMPLATE is not specified, use tmp.XXXXXXXXXX, and --tmpdir is implied.
    Files are created u+rw, and directories u+rwx, minus umask restrictions.
    
      -d, --directory     create a directory, not a file
      -u, --dry-run       do not create anything; merely print a name (unsafe)
      -q, --quiet         suppress diagnostics about file/dir-creation failure
          --suffix=SUFF   append SUFF to TEMPLATE; SUFF must not contain a slash.
                            This option is implied if TEMPLATE does not end in X
      -p DIR, --tmpdir[=DIR]  interpret TEMPLATE relative to DIR; if DIR is not
                            specified, use $TMPDIR if set, else /tmp.  With
                            this option, TEMPLATE must not be an absolute name;
                            unlike with -t, TEMPLATE may contain slashes, but
                            mktemp creates only the final component
      -t                  interpret TEMPLATE as a single file name component,
                            relative to a directory: $TMPDIR, if set; else the
                            directory specified via -p; else /tmp [deprecated]
          --help     display this help and exit
          --version  output version information and exit
    
    GNU coreutils online help: 
    For complete documentation, run: info coreutils 'mktemp invocation'
    
    

    生成随机值

    mktemp -u | awk -F'/' '{print $NF}'