我在提供给我的 RPM 中发现了一个错误。
rpm -qp --scripts foo.rpm > /tmp/badscript
cat /tmp/badscript
postinstall scriptlet (using /bin/sh):
...
if [ 'some bug' == true ]....
Run Code Online (Sandbox Code Playgroud)
我可以访问源代码和规范文件,但我无法找到哪个文件是安装后 scriptlet。
我可以修复这个错误吗?如果是这样,我在哪里可以找到脚本?
我以为它会在 buildutils/rpmbuild/SPEC 中,但是当我 grep 整个源代码时,我找不到包含错误的字符串。
我使用 Mac Book Pro(称为 foo)工作。我有一个服务器,我的客户将大文件 scp 到其中。(称为酒吧)。我经常 ssh 进入 bar,然后将一个文件(称为 buzz)scp 到我的 Mac。
bob@foo$ ssh bar
Last login: Fri Aug 23 14:49:32 2013 from foo
bob@bar$ scp /guest/buzz bob@foo:~
Password:
Run Code Online (Sandbox Code Playgroud)
我不想每次将文件 scp 传送回 Mac 时都输入密码,因为我最终会自动执行此操作。
我知道我可以设置 ssh 密钥,但我担心如果有人破解bar他们可以轻松访问foo. (如果我错了纠正我)
有没有办法在没有密码的情况下将文件从 bar 复制到 foo,如果服务器受到威胁,它不会让某人完全访问我的 Mac?
注:我想建立在我的Mac新用户,并禁止该用户shell访问力量的工作,但我觉得有一个更好的办法。如果可能,我宁愿不添加用户。
在学习 lpic 考试时,我遇到了命令cpio.
cpio 的描述指出:
cpio 最初旨在以连续、连续的方式将备份文件存档存储在磁带设备上。cpio 不压缩任何内容,但生成的存档通常使用 gzip 或其他外部压缩器进行压缩。
在查看如何使用 cpio 的示例时,我找不到 cpio 比更常见的工具(如tar.
什么是使用cpio将被使用的示例(除了磁带备份),或者它在今天的系统中不再相关?
我不小心将 CSV 文件的输出重定向到我的目录。如何rm只保留以数字开头的文件,而保留以字母开头的文件完整无缺?
mymachine$ ls
71.24 README.md 30 4.29
8 filter.sh 42.81 5.58
8.36 purchases.csv 1,208.8 100
16.7 2.56 21.78 269.96
Run Code Online (Sandbox Code Playgroud) 您将如何对 awk 的每一行的输出执行加法?
例如
cat foo | awk '{print $1}
42
42
42
Run Code Online (Sandbox Code Playgroud)
我正在寻找 42+42+42 (126) 的答案。
我正在尝试编写一个 for 循环来执行此操作,但必须有一种更简单的方法
#Not Working, and way too complex
cat foo |awk '{ print $1 }'|for i in $1 do; foo=$(( foo+$(i) )) done| echo $foo
Run Code Online (Sandbox Code Playgroud)
我可以用管道传输,wc -l但它只打印行数,它不评估它们。
如何从 awk 评估每一行?
似乎可以在网络安装上设置用户可以消耗多少空间的配额。
# edquota ramesh
Disk quotas for user ramesh (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 1419352 0 0 1686 0 0
Run Code Online (Sandbox Code Playgroud)
您还可以对用户拥有的 inode 数量设置软限制和硬限制。
为什么您需要限制用户可以访问的 inode 数量?
用户是否仍然能够用 1 个非常大的文件填满磁盘?
我有一个似乎挂起的进程。
当我尝试重新启动该过程时,出现超时。
service logstash_server stop
timeout: run: logstash_server: (pid 11797) 839061s, want down, got TERM
Run Code Online (Sandbox Code Playgroud)
我试过tail -f在日志上运行 a ,不幸的是没有显示任何内容。我也在kill -15这个过程中尝试了一个,但它仍然挂起。Top 不会将此显示为僵尸进程。
我想弄清楚“为什么”这个过程处于这种状态,因为这是过去一个月中第三次发生这种情况。
我检查了文件描述符和系统日志,但没有看到任何明显的东西。
文件描述符 => http://pastebin.com/90rDHhT4
系统日志输出 => http://pastebin.com/xBaMaL9Z
lsof | grep logstash=> http://pastebin.com/gsSdPyg5 的输出
我尝试在进程上运行 strace,它只显示 FUTEX_WAIT
strace -p 11797
Process 11797 attached
futex(0x7f6d95d8e9d0, FUTEX_WAIT, 11811, NULL
Run Code Online (Sandbox Code Playgroud)
在我发出之前还有什么我可以做的kill -9吗?
更新
与开发商开票。问题大约每周持续一次。
假设你有两个命令:
第一条命令
let foo=2+2
echo $foo
4
Run Code Online (Sandbox Code Playgroud)
第二个命令
date "%s"
1377107324
Run Code Online (Sandbox Code Playgroud)
你会如何组合它们?
尝试 1。
echo The epoch time is: `date +%s` in 100 seconds the time \
will be: `let future={date +%s}+100` $future
Run Code Online (Sandbox Code Playgroud)
尝试2。
echo The epoch time is: `date +%s` in 100 seconds the time \
will be: `let future=(date +%s)+100` $future
Run Code Online (Sandbox Code Playgroud)
加上大约 30 次其他类似的尝试
查看 sed、awk 和 grep 的手册页,我无法找到一种方法来搜索正好为 n 个字符长的字符串。
鉴于以下文本文件,我只想提取 6982a9948422
ID IMAGE COMMAND
CREATED STATUS PORTS
6982a9948422 ubuntu:12.04 apt-get install ping
1 minute ago Exit 0
Run Code Online (Sandbox Code Playgroud)
该值将始终位于第一列中,并且始终为 12 个字母数字字符。
这是我目前正在尝试的。
cat /tmp/test | awk {'print $1'} | sed 's/.*\([0-9],[A-Z],[a-z]\{12\}\).*//g'
Run Code Online (Sandbox Code Playgroud)
仅从6982a9948422上面的文本中提取的方法是什么?
我需要将 redis 2.8.x 安装到特定目录中,以便以后可以使用fpm创建 rpm。
从我的研究来看,这似乎应该可以通过使用 make PREFIX=
mkdir /tmp/installdir
cd /tmp
wget http://download.redis.io/releases/redis-2.8.6.tar.gz
tar -xvf redis-*.tar.gz
cd redis-2.8.6
make PREFIX=/tmp/installdir
make install
Run Code Online (Sandbox Code Playgroud)
我希望将二进制文件放在 /tmp/installdir 中,不幸的是该目录仍然是空的。似乎PREFIX=/tmp/installdir被忽视了。
通常我会运行./configure --prefix=/tmp/installdir但是因为下载不包含源代码,没有configure文件。
如何将软件安装到非标准目录?