为什么service zram的自动补全没有我新加上的选项?

sh/bash/dash/ksh/zsh等Shell脚本
回复
科学之子
帖子: 2260
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 842 次
接收感谢: 30 次

为什么service zram的自动补全没有我新加上的选项?

#1

帖子 科学之子 » 2016-09-06 17:09

为什么service zram的自动补全没有我新加上的选项?
optimize无法进行tab补全

代码: 全选

#!/bin/sh
### BEGIN INIT INFO
# Provides:          zram
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     S
# Default-Stop:      0 1 6
# Short-Description: Use compressed RAM as in-memory swap
# Description:       Use compressed RAM as in-memory swap
### END INIT INFO

# Author: Antonio Galea <antonio.galea@gmail.com>
# Thanks to Przemysław Tomczyk for suggesting swapoff parallelization
# Distributed under the GPL version 3 or above, see terms at
#      https://gnu.org/licenses/gpl-3.0.txt

FRACTION=200

MEMORY=`perl -ne'/^MemTotal:\s+(\d+)/ && print $1*1024;' < /proc/meminfo`
CPUS=`grep -c processor /proc/cpuinfo`
SIZE=$(( MEMORY * FRACTION / 100 / CPUS ))

case "$1" in
  "start")
    param=`modinfo zram|grep num_devices|cut -f2 -d:|tr -d ' '`
    modprobe zram $param=$CPUS
    for n in `seq $CPUS`; do
      i=$((n - 1))
      echo $SIZE > /sys/block/zram$i/disksize
      mkswap /dev/zram$i
      swapon /dev/zram$i -p 10
    done
    ;;
  "stop")
    for n in `seq $CPUS`; do
      i=$((n - 1))
      swapoff /dev/zram$i && echo "disabled disk $n of $CPUS"
    done
    wait
    sleep .5
    modprobe -r zram
    ;;
  "optimize")
    for n in `seq $CPUS`; do
      i=$((n - 1))
      echo $i
      echo 1 > /sys/block/zram$i/compact
    done
    echo 1 > /proc/sys/vm/compact_memory
    ;;
  *)
    echo "Usage: `basename $0` (start | stop | optimize )"
    exit 1
    ;;
esac
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 为什么service zram的自动补全没有我新加上的选项?

#2

帖子 lilydjwg » 2016-09-06 18:29

为什么还有 Ubuntu 用户用 initscript?!Ubuntu 老早就在用自己的 upstart 了啊!新版本的 Ubuntu 换成了 systemd 啊!Ubuntu 用 initscripts 是很多很多年之前的事情了吧?
头像
vickycq
论坛版主
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
送出感谢: 100 次
接收感谢: 995 次
联系:

Re: 为什么service zram的自动补全没有我新加上的选项?

#3

帖子 vickycq » 2016-09-06 18:37

自动补全是静态的,需在 bash-completion 中事先关照好。
对于未事先关照的服务,只有 start stop 两个选项。
参见 file:///usr/share/bash-completion/bash_completion 第 1131 行 _service()

参考 http://unix.stackexchange.com/questions ... nitscripts
这些用户感谢了作者 vickycq 于这个帖子:
科学之子 (2016-09-06 19:20)
评价: 3.7%
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
科学之子
帖子: 2260
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 842 次
接收感谢: 30 次

Re: 为什么service zram的自动补全没有我新加上的选项?

#4

帖子 科学之子 » 2016-09-06 19:33

lilydjwg 写了:为什么还有 Ubuntu 用户用 initscript?!Ubuntu 老早就在用自己的 upstart 了啊!新版本的 Ubuntu 换成了 systemd 啊!Ubuntu 用 initscripts 是很多很多年之前的事情了吧?
因为我不用Ubuntu改用Debian了 :em06
虽然Debian也换了systemd,但Debian Wiki的脚本和用法说明依然有效
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 为什么service zram的自动补全没有我新加上的选项?

#5

帖子 lilydjwg » 2016-09-06 20:48

那你要不要也换 zsh 呢?zsh 的补全功能要强大很多哦~
这些用户感谢了作者 lilydjwg 于这个帖子 (主题 2):
vickycq (2016-09-06 20:53) • 科学之子 (2016-09-06 21:16)
评价: 7.41%
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 为什么service zram的自动补全没有我新加上的选项?

#6

帖子 lilydjwg » 2016-09-06 21:14

WOW zsh 竟然连每个 service 支持哪些子命令都知道!
科学之子
帖子: 2260
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 842 次
接收感谢: 30 次

Re: 为什么service zram的自动补全没有我新加上的选项?

#7

帖子 科学之子 » 2016-09-06 21:22

lilydjwg 写了:WOW zsh 竟然连每个 service 支持哪些子命令都知道!
非常感谢提醒
不过懒得折腾了...
我从Ubuntu过渡到Debian实在是因为Ubuntu的引导(在我看来)太奇葩了,曾经能成功引导的我现在已经完全引导不了了.
再有就是更新也是很折腾人,Bug一堆还"更新特快";
刚把A版本的Bug一点点的想办法凑合了,又提示说让我滚动升级到B版本...
不升级的话几个月之后源就失效了...
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 为什么service zram的自动补全没有我新加上的选项?

#8

帖子 lilydjwg » 2016-09-06 21:50

233

其实一点也不折腾的哦~试试看:

代码: 全选

apt-get install -y zsh autojump git
git clone https://github.com/lilydjwg/dotzsh.git ~/.zsh
ln -s .zsh/zshrc ~/.zshrc
PS: 其实你可以试试 Arch 的哦~
这些用户感谢了作者 lilydjwg 于这个帖子:
科学之子 (2016-09-07 16:58)
评价: 3.7%
回复

回到 “Shell脚本”