这两天逛水木看到一个对这个问题很不错的解法 — 使用CPAN模块 local::lib 。该模块可以生成环境变量,让单个用户可以在自己家目录中安装需要的perl模块。
举例来看,比如我的模块都在~/local/lib/perl5下。就把下面命令加入.bashrc中
eval $(perl -Mlocal::lib=~/local/lib/perl5)
重新登录之后,cpan就会把默认安装目录放到~/local/lib/perl5下了。
编写程序时,在程序中的头部加入“use local::lib qw(/local/lib/perl5)“就可以将/local/lib/perl5加入模块的搜索路径了。
来自早年和豹爷的聊天记录
17:37 < weibao> Bash
的默认配置会存在一个问题,如果同时打开两个(或两个以上的)控制台,那么在这两
个控制台中执行的命令并不会互相分享到 history
中。有的命令历史甚至最终会被覆盖掉。要解决这个问题,可把下列内容添加到
~/.bashrc 或 ~/.bash_profile 文件中:
17:37 < weibao> shopt -s histappend
17:37 < weibao> PROMPT_COMMAND=‘history -a’
17:38 < weibao> 这个对于多人同时操作一个账号的时候,有点儿用
17:40 < weibao> 中午我记得好像是谁问这个来着
17:40 < laserhe> cool
17:40 < laserhe> 我需要这个
17:43 < jianingy> cool!
有时我们会突然想把一个正在运行中的程序放到后台去执行。由于事先没有准备,很可能忘记重定向输出到文件或者忘记使用screen、nohup一类的命令来跑。下面介绍一个处理这种问题的小技巧。
- 获得程序的进程号(PID)
- 使用gdb调试这个进程。(gdb -p xxx)
- 通过close系统调用关闭标准输出(STDOUT)或者标准错误(STDERR)
- 通过creat系统调用打开一个文件并将其文件描述符通过dup2系统调用复制给标准输出或者标准错误
- 退出调试器。现在可以将程序通过“CTRL+z”, “bg”, “disown“放入后台运行了。具体方法请参考: 让程序在后台运行的几个简单方法
详细操作步骤截图如下
nby:~ $ ps awux | grep [t]op
jianingy 4753 0.1 0.0 2308 1008 pts/2 S+ 17:44 0:00 top -b
nby:~ $ gdb -p 4753
GNU gdb (GDB) 7.0
…
0xb776a424 in __kernel_vsyscall ()
(gdb) call close(1)
$1 = 0
(gdb) call dup2(creat(”/tmp/log”, 0600), 1)
$2 = 1
(gdb) quit
使用本文附件中提供的脚本,可以方便的使用这种方法进行重定向。
参考文献
最新评论
1 周 4 天之前
6 周 2 天之前
10 周 1 天之前