小编Dam*_*ien的帖子

bash case 语句可以级联吗?

我正在尝试做这样的事情:

case $level in
    3)
        echo "Level Three"

    2)
        echo "Level Two"

    1)
        echo "Level one"
        ;;
esac
Run Code Online (Sandbox Code Playgroud)

如果 $level = 3,它将输出

Level Three
Level Two
Level One
Run Code Online (Sandbox Code Playgroud)

而如果 $level = 1,它只会输出

Level One
Run Code Online (Sandbox Code Playgroud)

但是当我尝试时,我收到错误,syntax error near unexpected token ')'因为我没有包含;;.

我知道的所有其他语言都允许这样做,有没有办法在 bash 中做到这一点?某种关键字意味着“现在继续进行下一个案例,就好像它匹配一样”?

bash shell-script

37
推荐指数
1
解决办法
2万
查看次数

我可以限制用户使用特殊程序吗?

是否可以添加用户并限制他运行特殊程序?
例如,该用户登录后,只能打开火狐浏览器上网,该用户不能运行其他程序。
例如,在终端中,删除某些环境变量(如 $HOME)时将无法访问命令。
但是是否可以避免在图形外壳中运行程序,例如 Gnome?如果是,如何?

shell fedora gnome permissions account-restrictions

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

找到偶尔的 CPU 内核猪

我有一个运行在中等速度 ARMv7 处理器上的 2.6.35 PREEMPT 内核。大约每 100 - 125 秒一次,某些事情会导致内核无法足够快地处理某些与音频相关的驱动程序以避免欠载。滞留时间通常在 15-30 毫秒的范围内,但也可能更长。目前尚不清楚这种阻塞是否完全在内核中发生,还是可能与以实时优先级 (SCHED_RR, 2) 运行的用户进程的调度有关。

我的猜测是有一个(至少一个)驱动程序在抢占时表现不佳。

用户进程的一些 strace 输出说明了正常和异常行为的某些方面,尽管我不确定如何解释各种时间报告?

正常情况:

     0.000518 poll([{fd=10, events=POLLIN|POLLERR|POLLNVAL, revents=POLLIN}], 1, 3415) = 1 
     0.010202 poll([{fd=10, events=POLLIN|POLLERR|POLLNVAL}, {fd=6, events=POLLOUT|POLLERR|POLLNVAL, revents=POLLOUT}], 2, 3404) = 1 
     0.000585 poll([{fd=10, events=POLLIN|POLLERR|POLLNVAL}, {fd=6, events=POLLOUT|POLLERR|POLLNVAL, revents=POLLOUT}], 2, 3404) = 1 
     0.000302 poll([{fd=10, events=POLLIN|POLLERR|POLLNVAL, revents=POLLIN}], 1, 3404) = 1 
     0.010706 poll([{fd=10, events=POLLIN|POLLERR|POLLNVAL}, {fd=6, events=POLLOUT|POLLERR|POLLNVAL, revents=POLLOUT}], 2, 3393) = 1 
     0.000480 poll([{fd=10, events=POLLIN|POLLERR|POLLNVAL}, {fd=6, events=POLLOUT|POLLERR|POLLNVAL, revents=POLLOUT}], 2, 3392) = 1 

在 fd6 上轮询输出时不会发生阻塞,当只轮询 fd10 …

kernel profiling

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