小编Szy*_*ski的帖子

如何正确地将 bash 数组传递给 awk

我的目标是创建一个脚本,列出前 5 个最消耗内存的进程及其 PID、Mem ifnos 和消耗的 Swap。部分地,我已经完成了。但现在,我想将其放入 bash/awk 的一个输出中。awk 看不到传递的 bash 数组。这是我的方法:

echo -e "PID\t%CPU\t%MEM\tMEM\tSWAP\tPROCESS"
pids=($(ps aux | awk 'BEGIN { FS = "[ \t]+" } ; {pid[$11]+=$2}; {mem[$11]+=int($6/1024)}; {cpuper[$11]+=$3};{memper[$11]+=$4}; END {for (i in mem) {print " "pid[i]"\t",cpuper[i]"%\t",memper[i]"%\t",mem[i],i}}' | sort -k4nr | head -n 5|awk '{print $1}'))

swap=()
j=0
for i in "${pids[@]}"
do
   :
        if [ -f "/proc/$i/status" ]
        then
                swap[j]=$(awk '/Tgid|VmSwap|Name/{printf $2" "}END{ print ""}' < /proc/$i/status|awk '{print int($3/1024)}')
        else
                swap[j]=0
        fi
        j+=1
done

echo ${swap[@]}

ps aux …
Run Code Online (Sandbox Code Playgroud)

linux bash shell awk args

4
推荐指数
1
解决办法
3811
查看次数

尽管使用了LZ4Compressor,但Cassandra压缩比为0

我在其中创建了一个用于文档存储的键空间和表.我用的代码是

CREATE KEYSPACE space WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

USE space;

CREATE TABLE documents (
              doc_id text,
              path text,
          content text,
              metadata_id text,
              PRIMARY KEY (doc_id)
            )
            WITH compression = { 'sstable_compression' : 'LZ4Compressor' };
Run Code Online (Sandbox Code Playgroud)

然后我将一些数据推入其中并使用命令nodetool cfstats orpd.documents我想检查压缩率.

$ nodetool cfstats space.documents
Keyspace: space
        Read Count: 0
        Read Latency: NaN ms.
        Write Count: 2005
        Write Latency: 0.050547132169576056 ms.
        Pending Flushes: 0
                Table: documents
                SSTable count: 0
                Space used (live): 0
                Space used (total): 0
                Space used …
Run Code Online (Sandbox Code Playgroud)

compression data-compression cassandra nosql

1
推荐指数
1
解决办法
367
查看次数

标签 统计

args ×1

awk ×1

bash ×1

cassandra ×1

compression ×1

data-compression ×1

linux ×1

nosql ×1

shell ×1