Debian一问一答

系统

网络配置

在/etc/network/interfaces 中设置网卡接口 ,不管是静态IP还是DHCP, 需重起网络设置方可生效

$ sudo /etc/init.d/networking restart

相关文件还有下面两个,修改后立即生效 /etc/hosts 、/etc/resolv.conf

服务加载

根据自己的习惯选用下列工具之一:

  1. rcconf 有时可能需要执行update-rcconf-guide以更新所能管理的服务脚本
  2. sysv-rc-conf
  3. sysvconfig

临时启动或停止系统服务

$ sudo /etc/init.d/*servicescript* {start|stop|restart} 

清除系统中的孤儿包

$ deborphan --guess-all|tr ["\n"] [" "]|sudo xargs apt-get remove --purge - -y

清除系统中仅仅remove的软件包

$ dpkg -l |grep ^rc|awk '{print $2}' |tr ["\n"] [" "]|sudo xargs dpkg -P -

是谁动了我的资源(查看进程调用)

$ lsof -p <pid>

查找问题所在

当程序出现问题, 但没有给出足够的错误提示时, 可以用下面的命令跟踪:

$ strace -f -F -o outfile <cmd>

debian下如何在命令行和图形模式下切换

ALT+ ALT+ 不同控制台间切换

ALT + F1 ~ F6 指定控制台切换 从图形到文本

ALT + F7 从文本回到图形

SHIFT + PageUp/PageDown 控制台下滚屏

系统服务

编写启动脚本, 并将其置于 /etc/init.d/目录下,付予可执行权限:

# /usr/sbin/update-rc.d defaults //设定为启动服务
# /usr/sbin/update-rc.d -f remove //将其删除
# /usr/sbin/update-rc.d start 20 1 2 3 . stop 20 4 5 . //举例。根据运行级别设定

启动进入文本模式

$ sudo update-rc.d -f ?dm remove //? 代表k、g、x

控制台快照

可以用setterm程序来获得控制台下的屏幕截图。命令格式为:

$ sudo setterm -dump 1

文件存为 screen.dump 截的图是.dump的文件,用VIM打开看即可。上面命令中,1指第一个虚拟控制台,如要获得第二个虚拟控制台的内容,应改为2,依此类推。

网卡绑定多个ip

$ sudo vim /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
  
auto eth0:1
iface eth0:1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
$ sudo vim /etc/network/ifstate
lo=lo
eth0=eth0
eth0:1=eth0:1
$ sudo /etc/init.d/networking restart

文本编辑

去掉 emacs 里面的 ^M

M-x replace-string C-q C-m RET

去掉 vi 里面的 ^M

:%s/ctrl-v ctrl-m/\r/g 

软件升级/安装源

保持软件包的一个版本

$ sudo aptitude hold package_name //保持版本
$ sudo aptitude unhold package_name //解除

一个apt的小技巧

$ cat /etc/apt/apt.conf
APT::Default-Release "testing";
APT::Get::Show-Upgraded "true";
APT::Get::Show-Versions "true";
APT::Get::Purge "true";

不要完全照抄哦,尤其是default-release/purge这两个选项,看自己的需求啦,再推荐两个工具:apt-listchanges、apt-listbugs,看名字就知道它们干什么的了,给你在安装包前足够的信息以便抉择。

优化您的安装源:

$ sudo apt-get install apt-spy
$ cd /etc/apt/
备份安装源
$ sudo mv sources.list sources.list.bak
获取详细的使用方法
$ sudo man apt-spy
更新您的镜像列表文件 /var/lib/apt-spy/mirrors.txt
$ sudo apt-spy update
在亚洲区寻找速度最快的testing版镜像,
并生成 sources.list文件,也可使用 -o 参数指定写入文件
$ sudo apt-spy -d testing -a Asia

apt-get update 抛出错误:

Dynamic MMap ran out of room (原因是apt的cache 太小了)

解决:在/etc/apt/apt.conf中加入

APT::Cache-Limit "10000000"; // 其中 10000000=10M

出现错误:

/var/cache/apt/archives/partial is missing (原因为partial 文件被误删)

解决:重建即可

$ sudo mkdir -p /var/cache/apt/archives/partial

Linux死机怎么办?

  1. 系统负载过高导致的卡死,但键盘还有反应: Ctrl+Alt+F1(F1-F6 一般来说都可以),就会切换文字界面。登陆后,提示符后面输入 top 命令回车,这时会看到一张动态的表,上面列出了耗用资源最多的进程。观察它刷新一两次,按q退出,然后输入 kill ,其中的 PID 你可以在 top 里面看到。这个时候应该会快了不少,如果你发现没有成功结束掉,就再输入 kill -KILL ,这次基本上就没问题了。
  1. 死机,键盘鼠标均无反应:大家在键盘右上方上找,可以找到一个叫做“Sys Rq”的键,在台式机的键盘上通常与 Print Screen 共用一个键,在笔记本可能在其他位置,如 Delete。以台式机为例,要使用这种方法需要按住 Print Screen(Sys Rq),然后依次按下 REISUB 这几个键,当按完 B键后系统就会重启。

下面解释一下这个方法:其实 Sys Rq 是一种叫做系统请求的东西,按住 Print Screen 的时候就相当于按住了 Sys Rq 键,这个时候输入的一切都会直接由 Linux 内核来处理,它可以进行许多低级操作。这个时候 reisub 中的每一个字母都是一个独立操作,他们分别表示:

unRaw 将键盘控制从 X Server 那里抢回来
tErminate 给所有进程发送 SIGTERM 信号,让他们自己解决善后
kIll 给所有进程发送 SIGKILL 信号,强制他们马上关闭
Sync 将所有数据同步至磁盘
Unmount 将所有分区挂载为只读模式
reBoot 重启

这6个字母的顺序是不可以记错的。

数据库相关

/etc/init.d/mysql被我rm了怎么办

重新安装的时候提示 invoke-rc.d:unknow initscript, /etc/init.d/mysql not found.

dpkg -S /etc/init.d/mysql
dpkg -i mysql

解决 mysql 缺省禁止远程连接的问题

vim /etc/mysql/my.cnf
# bind-address = 127.0.0.1  注释掉这行

ssh, mysql 等连接很慢怎么办

 vi /etc/nsswitch.conf
将下面这行:
hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
改为:
hosts:          files dns

重启机器,或重启服务:

sudo /etc/init.d/mysql restart
sudo /etc/init.d/ssh restart

subversion 版本控制

svn备份做法

首先从subversion的官方网站下载 svnmirror.sh 脚本

新建一个backup.sh脚本,内容如下:

leon@edu:~/svn-backup$ cat backup.sh
#!/bin/bash
 
allRepos=("REPO1" "REPO2" "REPO3")
export MODE="pull"
export RHOST="dev.XXX.com"
export RUSER="username"
export LANG="zh_CN.UTF-8"
 
for r in ${allRepos[*]}
do
# 本地svn备份保存路径
export LREPOS="/home/xxx/svn-backup/data/${r}"
# 远程SVN资源库存放路径
export RREPOS="/opt/xxx/${r}"
/home/xxx/svn-backup/svnmirror.sh
done

一次备份多个库,主要要做的是需要机器之间使用ssh的key登录,不用输入密码。

再来一个定时:

leon@edu:~/svn-backup$ crontab -l
0 5 * * * /home/jcai/svn-backup/backup.sh &gt; /home/jcai/svn-backup/log.txt &amp;

这种subversion备份方法,感觉每次备份的时候,速度快,主要是因为增量备份。

git本地操作

安装git-svn

apt-get install git-svn

checkout一个svn项目

git-svn clone http://dev.xxxx.com/svn/xx/trunk

如果你的svn服务器是标准布局(含有 trunk branches tags)可以加上 -s 参数,有的客户端不支持这么操作,你可以这么操作:

git svn init http://dev.xxx.com/svn/xx/trunk
git svn fetch

这样就能把项目文件检出到本地。修改了文件需要提交:

git commit -a -m ‘注释信息’

此时只是向本地的git库提交,没有提交到svn中央服务器

提交到svn服务器

git svn dcommit

svn 服务器有新东西,需要下载

git svn rebase

一些常用命令和svn差不多了,而他的revert和reset真的很强大,使用这个不怕很大的冲突了,他的每次合并就是打patch的过程。

参考资料

WiFi软件inSSIDer 2

inSSIDer能扫描任何你的WiFi卡/加密狗可以使用的网络,跟踪一段时间内的信号强度——即使你还没有连接到它。当要加入某个网络或检测自己的网络性能时,这是一个非常宝贵的工具。inSSIDer 2 的一些功能:

  • 帮助你查找和解决 WLAN 无线网络问题。
  • 跟踪信号强度。
  • 过滤无线接入点。
  • 导出 Wi-Fi 和 3G 数据到 KML 文件,并可导入到 Google Earth 中查看等等。

开源项目主页: https://github.com/metageek-llc/inSSIDer-2
下载: https://github.com/metageek-llc/inSSIDer-2-Cross-Platform/downloads

guide/skills/debian-qa-n.txt · 最后更改: 2011/01/17 16:00 由 Leon
[unknown link type]到顶部
GNU Free Documentation License 1.3
京ICP备05034962号 Debian Driven by DokuWiki get firefox browser Recent changes RSS feed Valid XHTML 1.0