我通过这个答案发现,多年来我一直在以一种幼稚的方式在提示中设置终端颜色。
我现在已经修改了我的 .bashrc 以使用 'tput' 命令来为我的提示的各种元素着色。我剩下的一个转义码是这样的:
TITLEBAR="\[\033]2; PROD - \u@\h:\w \007\]"
Run Code Online (Sandbox Code Playgroud)
有谁知道是否有一个 tput/terminfo 属性可以用来设置终端窗口的标题栏,以便我可以消除这种转义?
我正面临一个奇怪的问题。我有一个带有 solaris 11 的虚拟机,并尝试编写一些 bash 脚本。
如果,在外壳上,我输入:
export TEST=aaa
Run Code Online (Sandbox Code Playgroud)
然后运行:
set
Run Code Online (Sandbox Code Playgroud)
我正确地看到了一个名为 TEST 的新环境变量,其值为 aaa。但是,如果我在脚本中做基本相同的事情。当脚本终止时,我看不到变量集。举一个具体的例子,如果在文件 test.sh 中我有:
#!/usr/bin/bash
echo 1: $TEST #variable not defined yet, expect to print only 1:
echo 2: $USER
TEST=sss
echo 3: $TEST
export TEST
echo 4: $TEST
Run Code Online (Sandbox Code Playgroud)
它打印:
1:
2: daniele
3: sss
4: sss
Run Code Online (Sandbox Code Playgroud)
并且在执行之后, TEST 不会在 shell 中设置。我错过了什么吗?我尝试同时执行 export TEST=sss 和单独的变量集/导出,没有任何区别。
我注意到一个进程在我的 linux 服务器上占用了全部 CPU,其中的 COMMAND 列top -c是-bash.
cat /proc/<pid>/cmdline也显示-bash。
前面的破折号是什么意思?
更多信息:我不知道它是否相关, /proc/<pid>/exe -> /bin/bash (deleted)
我创建了一个文件,对它执行了 chmod 000,然后将所有者和组更改为 root:root。我仍然能够以它的原始创建者(不是 root)的身份删除该文件。
谁有权删除文件?
我设置了一个 Ubuntu 12 服务器(在机架空间云上使用他们的预配置映像)并创建了一个非 root 用户。当我以标准用户身份登录时,在终端上按 [TAB] 会输出一个实际的选项卡,然后按 [UP] 会输出 ^[[A 。但是,如果我以 root 身份登录,[UP] 会输入我的最后一个命令,并且 [TAB] 会自动完成。
.bashrc 文件在两个用户之间看起来完全相同。我真的不知道还能去哪里看。
当我注意到我放在 /etc/cron.weekly Debian6 服务器上的备份脚本没有执行时,我将这个小脚本放在其中,以查看是否执行了每周的 cronjob:
#!/bin/bash
echo 'CRON RAN' > /var/log/cron-weekly-runcheck.log
Run Code Online (Sandbox Code Playgroud)
将其另存为
-rwxr-xr-x 1 root root 64 Jul 15 02:14 /etc/cron.weekly/runcheck.sh
Run Code Online (Sandbox Code Playgroud)
当我今天检查时,它应该创建的日志文件不存在。
crontab 如下所示(据我所知,这应该是默认的 debian6 crontab):
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 1 root test -x /usr/sbin/anacron || ( cd / && …Run Code Online (Sandbox Code Playgroud) 我需要获取目录中非零大小的文件名称列表。这应该在 shell 脚本中,所以 bash(或 Perl one-liner)将是理想的。
我想记录所有通过 SSH 执行的命令。
说,
ssh something@server.com COMMAND
Run Code Online (Sandbox Code Playgroud)
我想在 server.com 上登录“COMMAND”
我确实进行了广泛的搜索,但找不到任何东西。
还有一个类似的问题,但我认为那里没有解决方案。
我可以得到实时视图
pstree -p | grep ssh
Run Code Online (Sandbox Code Playgroud)
我确实尝试过 Snoopy、auditd 和 sudosh,但无法通过 ssh 记录这些命令。
有一个http://freecode.com/projects/shwatchr。但我无法下载脚本进行测试。
有没有其他方法可以做到这一点?
谢谢.........
我有一些 PHP 脚本,它们以#!/usr/bin/env php. 默认解释器是 PHP 4.4,但脚本需要 PHP 5.3,所以我在 中创建了一个别名~/.bashrc:
alias php="/usr/local/bin/php5-53LATEST-CLI"
Run Code Online (Sandbox Code Playgroud)
因此调用php -v显示我 5.3 但#!/usr/bin/env php仍然使用 4.4。我不会更改脚本。那么我怎样才能获得 PHP 5.3#!/usr/bin/env php呢?
我有一个 shell 脚本,它通过 SSH 连接到同一主机(我的服务器)并运行在整个脚本中混合的各种命令。例如:
ssh -o ConnectTimeout=3 -o ConnectionAttempts=3 user@my-server "foocommand here"
mkdir -p /path/here
touch service.conf
...
ssh -o ConnectTimeout=3 -o ConnectionAttempts=3 user@my-server "barcommand here"
mkdir -p /other/path/here
touch /other/path/here/service.conf
...
ssh -o ConnectTimeout=3 -o ConnectionAttempts=3 user@my-server "darcommand here"
Run Code Online (Sandbox Code Playgroud)
等等。问题是每个 SSH 连接都打开并且握手需要一些时间,因为服务器my-server在地理上远离正在运行的脚本。
有没有办法加快这个过程并防止为每个必需的命令打开一个新的 SSH 连接?像 http 之类的东西可以让 SSH 保持活动状态吗?