• Rebase From Root

    git rebase -i –root

  • Change Max Sectors Per Request

    Q:

    linux 中的磁盘的max sectors per request属性怎么更改?blockdev 只能查看,不能改

    A:

    在Linux系统中,max sectors per request属性是块设备的内核参数之一,它定义了一个I/O请求中可以包含的最大扇区数量。这个参数对于优化磁盘性能和避免由于过大的I/O请求导致的潜在问题是非常重要的。虽然blockdev命令可以用来查看这个属性,但是它不提供修改这个参数的功能。

    要更改max sectors per request属性,你需要直接在/sys文件系统中进行操作。下面是具体的步骤和方法:

    查看当前的max sectors per request值: 你可以使用cat命令来查看特定块设备的当前max sectors per request值。例如,对于设备/dev/sda,你可以执行以下命令:

    cat /sys/block/sda/queue/max_sectors_kb

    这将显示当前以KB为单位的max sectors per request值。请注意,这个值可能被设置为一个范围,例如8-512,表示最小值是8KB,最大值是512KB。

    修改max sectors per request值:

    要修改这个值,你需要写入一个新的值到相应的文件中。使用echo命令和重定向操作可以实现这一点。例如,如果你想将/dev/sda的max sectors per request值设置为256KB,你可以执行以下命令:

    echo 256 > /sys/block/sda/queue/max_sectors_kb

    这将把max sectors per request值设置为256KB。请注意,你需要具有相应的权限(通常是root权限)来执行这个操作。

    验证更改:

    更改之后,使用cat命令再次查看max sectors per request值来确认更改是否成功:

    cat /sys/block/sda/queue/max_sectors_kb

    如果显示的值是256,那么你的更改已经成功。

    注意事项:

    在更改max sectors per request值之前,确保你了解这个更改对系统性能的影响。不同的值可能会对不同类型的工作负载产生不同的影响。

    某些系统可能会在重启后重置这些值到默认设置。如果你希望更改是永久性的,你可能需要在/etc/rc.local文件中添加相应的命令,或者创建一个udev规则来在设备加载时自动设置这个值。

    在某些情况下,如果设置的值超出了设备硬件的限制,可能会导致I/O操作失败。在更改之前,最好查阅设备的技术手册或者与设备供应商联系,以确定合适的值范围。

    以上步骤和方法基于搜索结果12中的信息。如果你遇到任何问题,或者需要进一步的帮助,可以参考这些文档或者联系系统管理员。

  • Npm Build Err_ossl_evp_unsupported

    遇到下面这样的报错

      opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
      library: 'digital envelope routines',
      reason: 'unsupported',
      code: 'ERR_OSSL_EVP_UNSUPPORTED'
    

    export NODE_OPTIONS=–openssl-legacy-provider

  • Docker Reload Cacert

    https://github.com/moby/moby/issues/39869

    目前看起来,只能重启才能加载系统证书。

    如果不想重启,有两个办法

    1. 配置 insecure-registries
    2. 创建 /etc/docker/certs.d/{domain} 文件夹,并将证书放在这下面
  • Run Amd64 On Mac M1

    package main
    
    import (
    	"fmt"
    
    	"golang.org/x/sys/unix"
    )
    
    func processIsTranslated() (bool, error) {
    	// https://developer.apple.com/documentation/apple_silicon/about_the_rosetta_translation_environment#3616845
    	ret, err := unix.SysctlUint32("sysctl.proc_translated")
    	print(ret)
    	print(err)
    
    	if err == nil {
    		return ret == 1, nil
    	} else if err.(unix.Errno) == unix.ENOENT {
    		return false, nil
    	}
    
    	return false, err
    }
    
    func main() {
    	if isTranslated, err := processIsTranslated(); err != nil {
    		panic(err)
    	} else if isTranslated {
    		fmt.Println("Running on Rosetta 2")
    	} else {
    		fmt.Println("Running natively")
    	}
    }
    
  • Profile Hang

    export DEBUGINFOD_URLS=””

    在使用 bcc profile 工具做火焰图的时候,卡在输出时。

    通过 strace 和 dcpdump 看到他在请求 https://debuginfod.centos.org.

  • Nonono

    奶奶在家里让他去上学的时候,说“你不上学,爷爷和我都不和你玩。你就自己玩吧。”

    我非常不喜欢这种方式,第一你没权利替爷爷做决定。第二我想起来我小学五年级的班主任,我现在还觉得他是个人渣,他惩罚一个人的时候方式是不让其他任何同学和这个人讲话。

  • Auto Activate

    function auto_activate_venv() {
        if [ -e "venv/bin/activate" ]; then
            source venv/bin/activate
        else
            local dir=$(pwd)
            while [[ "$dir" != "" && ! -e "$dir/venv/bin/activate" ]]; do
                dir=${dir%/*}
            done
            if [ -e "$dir/venv/bin/activate" ]; then
                source $dir/venv/bin/activate
            fi
        fi
    }
    #export PROMPT_COMMAND="auto_activate_venv"
    
    function cd() {
      type deactivate > /dev/null && deactivate
    
      builtin cd $1
    
      auto_activate_venv
    }
    auto_activate_venv
    
  • Update Kafka Cert

    export idx=3
    export cluster=hotel-searchservice-shaxy-b
    
    k exec -npro-kafka $cluster-kafka-$idx -- mkdir /tmp/broker-certs /tmp/client-ca-certs /tmp/cluster-ca-certs
    
    clustercert=`k get secret -npro-kafka $cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d`
    k exec -npro-kafka $cluster-kafka-$idx -- sh -c "echo '$clustercert' > /tmp/cluster-ca-certs/ca.crt"
    
    clientscert=`k get secret -npro-kafka $cluster-clients-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d`
    k exec -npro-kafka $cluster-kafka-$idx -- sh -c "echo '$clientscert' > /tmp/client-ca-certs/ca.crt"
    
    brokerkey=`k get secret -npro-kafka $cluster-kafka-brokers -o jsonpath="{.data.$cluster-kafka-$idx\.key}" | base64 -d`
    brokercert=`k get secret -npro-kafka $cluster-kafka-brokers -o jsonpath="{.data.$cluster-kafka-$idx\.crt}" | base64 -d`
    k exec -npro-kafka $cluster-kafka-$idx -- sh -c "echo '$brokerkey' > /tmp/broker-certs/$cluster-kafka-$idx.key"
    k exec -npro-kafka $cluster-kafka-$idx -- sh -c "echo '$brokercert' > /tmp/broker-certs/$cluster-kafka-$idx.crt"
    
    
    k exec -npro-kafka $cluster-kafka-$idx -- sh -c "sed 's|/opt/kafka/|/tmp/|' kafka_tls_prepare_certificates.sh > /tmp/upate-cert.sh"
    
    k exec -npro-kafka $cluster-kafka-$idx -- sh -c 'export CERTS_STORE_PASSWORD=$(grep listener.name.replication-9091.ssl.keystore.password /tmp/strimzi.properties | cut -f2 -d=) && sh /tmp/upate-cert.sh'
    k exec -npro-kafka $cluster-kafka-$idx -- bin/kafka-configs.sh --bootstrap-server 127.0.0.1:9092  --entity-type brokers --entity-name $idx --alter --add-config listener.name.replication-9091.ssl.truststore.location=/tmp/kafka/cluster.truststore.p12
    
  • Keytool List

    keytool -v -list -storetype pkcs12 -keystore keystore.p12