共 6 页, « 1 [2] 3 4 5 » ... 最后一页 »
所谓交互式的rpm包,就是说在安装过程中接受用户输入,来完成诸如许可证确认、创建配置文件等工作。
首先要说明,不推荐使用rpm创建交互式安装包。rpm的设计目标就是在完全不需要用户干涉的前提下完成软件的安装、升级等工作,这样可以通过cron或者yum/apt/up2date等脚本完成自动安装和自动升级。而交互式rpm包将破坏这种特性。另外,通过图形界面安装rpm包时,交互式脚本将完全不能执行(因为没有终端)。因此,在rpm中执行脚本时,标准输入是被关闭的,也就是说你无法在rpm安装过程中获得任何用户输入。
但有时真的需要创建交互式rpm包,如迫于工作压力,或者创建内部使用的安装程序,或者作为产品分发给完全不懂计算机的用户等。虽然rpm中的脚本无法获取用户输入,但方法总是人想出来的。
我们知道在spec文件的%post节中可以书写bash脚本,而通过read命令可以获取用户输入。但如果在%post中使用read命令,你会发现read并不等到你输入而是直接就结束了。原因就是rpm安装时关闭了标准输入。我们可以手动将它重新打开,方法就是在read之前加入以下代码:
exec 6<&0 0</dev/tty # 将标准输入保存到6,然后在标准输入上打开/dev/tty read MYVAR exec 0<&6 6<&- # 恢复备份的标准输入并关闭6
当然标准输入(0)本身就是关闭的,所以不备份应该也无所谓。/dev/tty是指向用户控制台的一个链接,在命令行控制台和远程终端的情况下都可以正确使用。
最近发现公司的小孩儿们都开始学Linux了,可惜学的都是那些超级麻烦的命令,唉。 其实Linux这样用更简单些……
改IP,可以用 netconfig,可惜每次都得输入完整的IP、掩码、网关和DNS。 不如直接 vi /etc/sysconfig/network-scripts/ifcfg-eth0 再 /etc/init.d/network restart 来得快。
改DNS,最快的就是 vi /etc/resolv.conf,不用重启。
重启httpd,/etc/init.d/httpd restart 要比 service httpd restart快,因为前者可以补齐而后者不能。
修改系统服务,用chkconfig要比setup方便。
看最新的log,用 tail -f /var/log/xxx.log 比 vi /var/log/xxx.log 方便。 看不清的话就先 clear 再 tail -n 0 -f /var/log/xxx.log。
用好bash的历史记录。
压缩解压缩别动不动就tar czvf/tar xzvf,要养成不用v的好习惯。文件多了要快上好几倍。
两台机器传文件,scp 要比samba方便。windows的话就装个cygwin,或者用PuTTY自带的pscp.exe也行。
测试网络连接,nc 192.168.1.10 80 要比 telnet 192.168.1.10 80 好用。
修改samba配置,直接修改 /etc/samba/smb.conf 要比图形界面方便。
下面对fcicq中的这篇文章 别拿这些太当回事: 就这些命令做一些解释, 做个深入浅出版的哈。
其实就是这些命令的排列组合:
- awk用于写简单脚本;
- sed用于正则表达式替换;
- sort用于排序;
- uniq用于统计。
RedHat系如何查看已安装的软件包的大小,在精简系统时很有用。
for i in `rpm -qa`; do echo -n $i; rpm -qi $i | grep Size | gawk '{ printf(" %s\n", $3); }' ; done > list
分开写就是
for i in `rpm -qa`
do
echo -n $i
rpm -qi $i | grep Size | gawk '{ printf(" %s\n", $3); }'
done > list
忙了一天做幻灯片,累死了。看来就算是自己熟悉的东西,想要给别人讲明白也不是件容易的事儿。 好在工作中发现了一个有用的命令:fc,使得今天总算有点乐趣。fc是bash的一个内部命令, 作用是修改命令历史中的命令。man bash然后搜索fc即可看到用法。
顺便总结一下bash命令行历史的用法:
- history
- 命令查看以前用过的命令行列表。
- !123
- 执行命令历史中编号为123的命令。
- !cat
- 执行最后一条以cat开头的命令。
- !!
- 执行上一条命令。
- fc
- 打开编辑器(vim)编辑上一条命令。
- fc 123
- 编辑命令历史中编号为123的命令。
- fc 123 130
- 编辑命令历史中123-130的八条命令,退出后依次执行
- fc ls
- 编辑最后一条以ls开头的命令。
- fc -s ls=cat ls
- 将最后一条以ls开头的命令中的ls替换成cat,然后执行
Linux的screen命令不错,习惯了你会觉得它比windows的任务栏好用多了。下面是我的.screenrc,仅供参考。
#
# ~/.screenrc
#
# 启动时不显示欢迎屏幕
startup_message off
# 定义screen的功能键为Ctrl-Z。向终端输入Ctrl-Z时应按 Ctrl-Z z。
escape ^Zz
# 屏幕缓冲区 1024 行。
defscrollback 1024
# 在最下一行显示窗口列表和时钟
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rY}%n %t%{-}%+w %=%{..G} %H(%l) %{..Y} %Y/%m/%d %c:%s "
# 关闭错误提示
vbell off
# 按 Ctrl-Z w 或 Ctrl-Z Ctrl-W 显示窗口列表
bind w windowlist -b
bind ^w windowlist -b
阅读全文 »大家都知道Linux下的date命令可以查看或修改系统时间,其实它还能用于日期计算等,十分方便。
首先是最基本的查看、修改时间。
[root@local ~]# date Thu Dec 7 21:47:52 JST 2006 [root@local ~]# date --set='2006-12-08 14:01:00' Fri Dec 8 14:01:00 JST 2006
指定日期显示格式,具体的格式指定方法参见 date --help。
[root@local ~]# date +%Y%m%d 20061208 [root@local ~]# date +%F 2006-12-08 [root@local ~]# date +%s 1165554109 [root@local ~]# date -R Fri, 08 Dec 2006 14:02:09 +0900
时间计算。
[root@local ~]# date -d "2 days ago" +%F 2006-12-06 [root@local ~]# date -d '15 years' +%F 2021-12-08 [root@local ~]# date -d '30 minutes ago' Fri Dec 8 13:57:17 JST 2006
用curl下载网页估计大家都会,但是模拟 multipart/form-data 形式的 form 上传文件则稍稍复杂些。命令行如下。
curl -F "action=upload" -F "filename=@file.tar.gz" http://localhost/action.php
如果使用了-F参数,curl就会以 multipart/form-data 的方式发送POST请求。-F参数以name=value的方式来指定参数内容,如果值是一个文件,则需要以name=@file的方式来指定。
如果通过代理,上面的命令有可能会被代理拒绝,这时需要指定上传文件的MIME类型。
curl -x myproxy.com:1080 -F "action=upload" -F "filename=@file.tar.gz;type=application/octet-stream" http://localhost/action.php
另外,如果不上传文件,则可以使用 -d 参数,这时curl会以 application/x-www-url-encoded 方式发送 POST 请求。
curl -d "action=del" -d "id=12" http://localhost/action.php
主机名一般是在安装时设定好的,若想修改,则需要进行以下步骤。
- 执行命令 hostname,修改当前系统的主机名
# hostname newhost
- 修改 /etc/sysconfig/network,使得下次启动时使用新的主机名
hostname=newhost
- 修改 /etc/hosts。不修改的话,apache等需要解析主机名的服务将不能启动
127.0.0.1 newhost localhost
- 最后就是命令行提示符中的主机名还没有改变,如果很在意的话,重新登录一下就行了
这里有一篇关于如何安装 Ubuntu 6.06 的文章,虽然有些老了,但是本文是在这篇文章的基础上写成的,看看也许能有些参考。
修改 /etc/source.list,将其中的所有 dapper 替换成 edgy。
如果你使用了 http://packages.freecontrib.org/ubuntu/plf/ 的源,则要将这个源的 dapper 替换为 edgy-plf,并执行以下命令以添加公钥。
# wget http://packages.freecontrib.org/ubuntu/plf/12B83718.gpg -O- | sudo apt-key add -
然后执行
# apt-get dist-upgrade
注意观察要更新的软件包,你会发现安装程序需要删除一部分软件,包括显卡驱动!所以升级之后图形界面会有问题,这个问题我们升级以后再修复。
然后就是漫长的下载和安装过程。
如果你以前修改过登录界面(gdm)的主题,那么在安装新版时,安装程序会提示你是否要覆盖/etc/gdm/gdm.conf-custom文件。
Configuration file `/etc/gdm/gdm.conf-custom'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : background this process to examine the situation
The default action is to keep your current version.
*** gdm.conf-custom (Y/I/N/O/D/Z) [default=N] ?
这时你可以选择 d,然后复制下自己修改过的部分,然后选择 Y 安装新版 gdm.conf-custom,安装结束后将自己的修改内容恢复即可。
安装成功之后重新启动计算机……啊?gdm启动失败……这正是由于上面升级时删掉了显卡驱动的问题。此时先按Ctrl+F2切换到控制台,然后登录系统并切换到 root 用户,执行下列命令:
# apt-get install libgl1-mesa-glx
然后再执行
# apt-get install xorg
如果你以前安装过 ATI 或者 GeForce 的官方显卡驱动,那么系统中的 /etc/X11/xorg.conf 为使用官方驱动的版本,而升级时官方显卡驱动被卸载了,因此需要将 xorg.conf 恢复成安装显卡驱动之前的状态。假设当初安装的是 ATI 驱动并且使用 aticonfig 命令自动配置了显卡,那么原始的 xorg.conf 会备份成 /etc/X11/xorg.conf-original-0,用这个文件恢复即可。
# cp /etc/X11/xorg.conf-original-0 /etc/X11/xorg.conf
然后再次重新启动,这样就可以进入图形界面了。
备注:据旺旺同学的经验,如果按照以上的方法还是不能恢复的话,可以试试以下两个命令:
# apt-get remove xserver-xorg-driver-ati # apt-get install xserver-xorg-video-ati
