我上了几年网了,原来还没有发现过微软在网上打过广告。
今天早上,使用 全库网中的IP地址查询功能时,发现上面有微软打的几个广告,是百度广告。
Continue reading "呵呵,微软也开始打windows广告了,百度广告;我和linux"
正在关注 Linux 、开源、IT 的个人博客。
我上了几年网了,原来还没有发现过微软在网上打过广告。
今天早上,使用 全库网中的IP地址查询功能时,发现上面有微软打的几个广告,是百度广告。
Continue reading "呵呵,微软也开始打windows广告了,百度广告;我和linux"
转自:Novell Ubuntu Linux命令大全使用方法: http://www.lslnet.com/linux/docs/linux-7400.htm
*********************************************************************************************************
Novell Ubuntu Linux命令大全使用方法
蓝森林 http://www.lslnet.com 2007年4月28日 20:01
1 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以.头的隐含文件
文件管理 # ls ls -l或ll 列出当前目录下文件的详细信息
文件管理 # pwd pwd 查看当前所在目录的绝对路经
文件管理 # cd cd .. 回当前目录的上一级目录
文件管理 # cd cd - 回上一次所在的目录
文件管理 # cd cd ~ 或 cd 回当前用户的宿主目录
文件管理 # cd cd ~用户名 回指定用户的宿主目录
2 文件管理 # mkdir mkdir 目录名 创建一个目录
文件管理 # mkdir mkdir –p 递归式去创建一些嵌套目录
文件管理 # rmdir Rmdir 空目录名 删除一个空目录
3 文件管理 # rm rm 文件名 文件名 删除一个文件或多个文件
文件管理 # rm rm -rf 非空目录名 递归删除一个非空目录下的一切,不让提式-f
4 文件管理 # cat cat文件名 一屏查看文件内容
5 文件管理 # more more文件名 分页查看文件内容
6 文件管理 # less less 文件名 可控分页查看文件内容
7 文件管理 # grep grep字符 文件名 根据字符匹配来查看文件部分内容
8 文件管理 # mv mv 路经/文件 /经/文件 移动相对路经下的文件到绝对路经下
文件管理 # mv mv 文件名 新名称 在当前目录下改名
9 文件管理 # cp cp /路经/文件 ./ 移动绝对路经下的文件到当前目录下
10 文件管理 # find find 路经 -name “字符串” 查找路经所在范围内满足字符串匹配的文件和目录
11 文件管理 # ln ln 源文件 链接名 创建当前目录源文件的硬链接
ln /home/test /usr/test1 在/usr下建立/home/test的硬链接
12 文件管理 # ln Ln -s a b 创建当前目录下a的符号链接b
13 文件管理 # touch touch file1 file2 创建两个空文件
14 磁盘管理 # df df 用于报告文件系统的总容量,使用量,剩余容量。
15 磁盘管理 # du du -b /home 查看目前/HOME目录的容量(k)及子目录的容量(k)。
16 磁盘管理 # fdisk fdisk -l 查看系统分区信息
17 磁盘管理 # fdisk fdisk /dev/sdb 为一块新的SCSI硬盘进行分区
18 磁盘管理 # mkfs.ext3 Mkfs.ext3 /dev/sdb1
为第一块SCSI硬盘的第一主分区格式化成
ext3的文件系统
mkfs.ext2 Mkfs.ext2/dev/sdb2 格式化成ext2文件系统
19 磁盘管理 # mount mount -t 文件系统类型 设备路经 访问路经 磁盘管理 # 文件系统类型
ISO9660 光驱文件系统
vfat Fat文件系统(windows)
挂载光驱 # mount –t iso9660 /dev/cdrom /mnt/cdrom
挂载FAT # mount –t vfat /dev/hda5 /mnt/cdrom 挂第一个ide的第五个逻辑分区
17 磁盘管理 # Umount /mnt/cdrom 卸载/mnt/cdrom为空
18 文件权限 # chmod chmod u+s file 为file的属主加上特殊权限
chmod g+r file 为file的属组加上读权限
chmod o+w file 为file的其它用户加上写权限
chmod a-x file 为file的所有用户减去执行权限
chmod 765 file 为file的属主设为完全权限,属组设成读写权,其它用户具有读和执心权限
19 文件权限 # chown chown root /home 把/home的属主改成root用户
20 文件权限 # chgrp chgrp root /home 把/home的属组改成root组
21 打印管理 # redhat-config-printer-tui 进入安装打印机界面
22 打印管理 # lp lp –d hptr file 打印file到hptr的打印机上
23 打印管理 # lpq Lpq –P 打印机名 查看打印机的状态
24 打印管理 # lprm Lprm –P 打印机名 a 删除打印机内的打印作业
25 打印管理 # disable Disable –r “changing paper” HPtr 禁用打印机并提示原因
26 打印管理 # enable Enable HPtr 重新启用被禁用的
27 用户管理 # useradd Useradd 创建一个新的用户
28 用户管理 # groupadd Groupadd 组名 创建一个新的组
29 用户管理 # passwd Passwd 用户名 为用户创建密码
30 用户管理 # Passwd -d Passwd -d用户名 删除用户密码也能登陆
31 用户管理 # Passwd -l Passwd -l用户名 锁定账号密码
32 用户管理 # Passwd -u Passwd -u用户名 解锁账号密码
33 用户管理 # Passwd -S Passwd -S用户名 查询账号密码
34 用户管理 # Usermod -l Usermod -l 新用户名 老用户名 为用户改名
35 用户管理 # Usermod -L Usermod -L 要锁定用户名 锁定用户登陆
36 用户管理 # Usermod -U Usermod –U解锁用户名 解锁用户登陆
37 用户管理 # Usermod -u Usermod –u 501用户名 改变用户UID
38 用户管理 # Userdel Userdel–r 用户名 删除用户一切
39 用户管理 # Groupmod -n Groupmod –n新用户名 老用户名 为组改名
40 用户管理 # Groupmod -g Groupmod –g 501 组名 改变组GID
41 用户管理 # groupdel Groupdel组名 先应删它的用户 删除组
42 用户管理 # gpasswd -a gpasswd -a 用户名 组名 增加用户到组
43 用户管理 # Id id 用户名 查用户信息
44 软件管理 # rpm -qa rpm –qa | less 查询已安装RPM
45 软件管理 # rpm –qa | grep ftp 查询指定RPM
46 软件管理 # rpm -q rpm -q 已安装的RPM包 查是否安装
47 软件管理 # rpm -q telnet-server 查看telnet服务器包
48 软件管理 # rpm -qi rpm –qi 软件包名称 查看软件的描述信息
49 软件管理 # rpm -ql rpm –ql软件包名称 查询软件包的文件列表
50 软件管理 # rpm -qf rpm –qf软件包名称 查询某个文件所属的软件包
51 软件管理 # rpm -qp rpm –qp软件包全名 查询未安装的软件包信息
52 软件管理 # rpm -e rpm –e 软件包名称 删除具体的软件包
53 软件管理 # rpm -U rpm –Uvh软件包全名 升级软件包并显示过程
54 软件管理 # rpm -ivh rpm –ivh 软件包全名 安装软件包并显示过程
55 软件管理 # rpm -V rpm –V软件包名称 验证软件包的大小,类型等
56 软件管理 # tar -c 创建包 –x 释放包 -v 显示命令过程 –z 代表压缩包
57 软件管理 # tar -cf tar –cvf benet.tar /home/benet 把/home/benet目录打包
58 软件管理 # tar -czf tar –zcvf benet.tar.gz /mnt 把目录打包并压缩
59 软件管理 # tar –tf tar –tf benet.tar 看非压缩包的文件列表
60 软件管理 # tar –tzf tar –tf benet.tar.gz 看压缩包的文件列表
61 软件管理 # tar –xf tar –xf benet.tar 非压缩包的文件恢复
62 软件管理 # tar –zxvf tar –zxvf benet.tar.gz 压缩包的文件解压恢复
63 软件管理 # tar -jxvf tar –jxvf benet.tar.bz2
64 软件管理 # diff diff file1 file2 > 补丁名.patch 为新旧文件生成补丁文件
65 软件管理 # diff diff file1 file2 比较两个文件的区别
66 软件管理 # Patch Patch file补丁名.patch 打补丁
67 软件管理 # ./configure --prefix=/usr/local/ 编译前配置
68 软件管理 # make 编译
69 软件管理 # make install 安装编译好的源码包
70 启动管理 # reboot Init 6 重启LINUX系统
71 启动管理 # Halt Init 0 Shutdown –h now 关闭LINUX系统
72 启动管理 # runlevel 显示系统运行级
73 启动管理 # Init [0123456] 改变系统运行级,7种
74 启动管理 # Chkconfig –-list [服务名称] 查看服务的状态
75 启动管理 # Chkconfig –-level <运行级> <服务名> on|off|set 设置服务的启动状态
76 启动管理 # Chkconfig <服务名> on|off|set 设置非独立服务启状态
77 进程管理 # Top动态 Ps-aux静态 进程树pstree 查看系统进程
78 进程管理 # 程序名 & 后台运行程序
79 进程管理 # fg 把后台运行的进程调回前台
80 进程管理 # bg 把前台运行进程调到后台
81 进程管理 # renice Renice +1 180 把180号进程的优先级加1
82 进程管理 # kill Kill PID 终止某个PID进程
83 进程管理 # at at 5pm + 3 days /bin/ls 指定三天后下午5:00执行/bin/ls
84 进程管理 # crontab Crontab -e 用VI的形式来编辑自动周期性任务
85 进程管理 # crontab Crontab -l 查看自动周期性任务
86 进程管理 # crontab Crontab -r 删除自动周期性任务
87 进程管理 # crond Service crond 马上启动自动周期性服务 Service crond <启动|停止|重启|状态>
实现磁盘配额 (注安装LINUX时建立/home分区)
目标:对用户zhao在/home目录上实现soft limit为5k,hard limit 为10k的磁盘配额
实现步骤:
1. 修改包含/home的行, #vi /etc/fstab, 改为:defaults,usrquota。也就是增加usrquota项。然后保存退出。
2、卸载/home目录 #umount /home
3. 挂接/home目录 #mount /home
4、增加用户zhao #useradd zhao
5、修改密码 #passwd zhao
6、生成关于/home目录的quota信息 # quotacheck -cmug /home
#quotacheck -vu /home
7、查看所有用户的信息 #repquota -au
8、设置配额 #edquota -u zhao
将soft 和hard 分别改为5和10
9、保存并退出 #wq!
10、修改时间 #edquota -t
11、 #wq!
12.开启/home上的磁盘配额功能 #quotaon /home
13.查询配额 #quota -u zhao
14.验证配额 #su - zhao
$touch myfile
Ubuntu一些很必要的命令
安装
查看软件xxx安装内容
dpkg -L xxx
查找软件
apt-cache search 正则表达式
查找文件属于哪个包
dpkg -S filename
apt-file search filename
查询软件xxx依赖哪些包
apt-cache depends xxx
查询软件xxx被哪些包依赖
apt-cache rdepends xxx
增加一个光盘源
sudo apt-cdrom add
系统升级
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
清除所以删除包的残余配置文件
dpkg -l |grep ^rc|awk '{print $2}' |tr ["/n"] [" "]|sudo xargs dpkg -P -
编译时缺少h文件的自动处理
sudo auto-apt run ./configure
查看安装软件时下载包的临时存放目录
ls /var/cache/apt/archives
备份当前系统安装的所有包的列表
dpkg --get-selections | grep -v deinstall > ~/somefile
从上面备份的安装包的列表文件恢复所有包
dpkg --set-selections < ~/somefile
sudo dselect
清理旧版本的软件缓存
sudo apt-get autoclean
清理所有软件缓存
sudo apt-get clean
删除系统不再使用的孤立软件
sudo apt-get autoremove
系统
查看内核
uname -a
查看Ubuntu版本
cat /etc/issue
查看内核加载的模块
lsmod
查看PCI设备
lspci
查看USB设备
lsusb
查看网卡状态
sudo ethtool eth0
查看CPU信息
cat /proc/cpuinfo
显示当前硬件信息
lshw
硬盘
查看硬盘的分区
sudo fdisk -l
查看IDE硬盘信息
sudo hdparm -i /dev/hda
查看STAT硬盘信息
sudo hdparm -I /dev/sda
或
sudo apt-get install blktool
sudo blktool /dev/sda id
查看硬盘剩余空间
df -h
df -H
查看目录占用空间
du -hs 目录名
优盘没法卸载
sync
fuser -km /media/usbdisk
内存
查看当前的内存使用情况
free -m
进程
查看当前有哪些进程
ps -A
中止一个进程
kill 进程号(就是ps -A中的第一列的数字)
或者 killall 进程名
强制中止一个进程(在上面进程中止不成功的时候使用)
kill -9 进程号
或者 killall -9 进程名
图形方式中止一个程序
xkill 出现骷髅标志的鼠标,点击需要中止的程序即可
查看当前进程的实时状况
top
查看进程打开的文件
lsof -p
ADSL
配置 ADSL
sudo pppoeconf
ADSL手工拨号
sudo pon dsl-provider
激活 ADSL
sudo /etc/ppp/pppoe_on_boot
断开 ADSL
sudo poff
查看拨号日志
sudo plog
网络
根据IP查网卡地址
arping IP地址
查看当前IP地址
ifconfig eth0 |awk '/inet addr/ {split($2,x,":");print x[2]}'
查看当前外网的IP地址
w3m -no-cookie -dump www.ip138.com|grep -o '[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}'
w3m -no-cookie -dump ip.loveroot.com|grep -o '[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}'
查看当前监听80端口的程序
lsof -i :80
查看当前网卡的物理地址
arp -a | awk '{print $4}'
ifconfig eth0 | head -1 | awk '{print $5}'
立即让网络支持nat
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -I POSTROUTING -j MASQUERADE
查看路由信息
netstat -rn
sudo route -n
手工增加删除一条路由
sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
修改网卡MAC地址的方法
sudo ifconfig eth0 down #关闭网卡
sudo ifconfig eth0 hw ether 00:AA:BB:CCD:EE #然后改地址
sudo ifconfig eth0 up #然后启动网卡
统计当前IP连接的个数
netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
统计当前20000个IP包中大于100个IP包的IP地址
tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk ' $1 > 100 '
屏蔽IPV6
echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6
服务
添加一个服务
sudo update-rc.d 服务名 defaults 99
删除一个服务
sudo update-rc.d 服务名 remove
临时重启一个服务
/etc/init.d/服务名 restart
临时关闭一个服务
/etc/init.d/服务名 stop
临时启动一个服务
/etc/init.d/服务名 start
设置
配置默认Java使用哪个
sudo update-alternatives --config java
修改用户资料
sudo chfn userid
给apt设置代理
export http_proxy=http://xx.xx.xx.xx:xxx
修改系统登录信息
sudo vim /etc/motd
中文
转换文件名由GBK为UTF8
sudo apt-get install convmv
convmv -r -f cp936 -t utf8 --notest --nosmart *
转换文件内容由GBK为UTF8
iconv -f gbk -t utf8 $i > newfile
转换 mp3 标签编码
sudo apt-get install python-mutagen
find . -iname “*.mp3” -execdir mid3iconv -e GBK {} /;
控制台下显示中文
sudo apt-get install zhcon
使用时,输入zhcon即可
文件
快速查找某个文件
whereis filenamefind 目录 -name 文件名
查看文件类型
file filename
显示xxx文件倒数6行的内容
tail -n 6 xxx
让tail不停地读地最新的内容
tail -n 10 -f /var/log/apache2/access.log
查看文件中间的第五行(含)到第10行(含)的内容
sed -n '5,10p' /var/log/apache2/access.log
查找包含xxx字符串的文件
grep -l -r xxx .
查找关于xxx的命令
apropos xxx
man -k xxx
通过ssh传输文件
scp -rp /path/filename username@remoteIP:/path #将本地文件拷贝到服务器上
scp -rp username@remoteIP:/path/filename /path #将远程文件从服务器下载到本地
查看某个文件被哪些应用程序读写
lsof 文件名
把所有文件的后辍由rm改为rmvb
rename 's/.rm$/.rmvb/' *
把所有文件名中的大写改为小写
rename 'tr/A-Z/a-z/' *
删除特殊文件名的文件,如文件名:--help.txt
rm -- --help.txt 或者 rm ./--help.txt
查看当前目录的子目录
ls -d */. 或 echo */.
将当前目录下最近30天访问过的文件移动到上级back目录
find . -type f -atime -30 -exec mv {} ../back /;
将当前目录下最近2小时到8小时之内的文件显示出来
find . -mmin +120 -mmin -480 -exec more {} /;
删除修改时间在30天之前的所有文件
find . -type f -mtime +30 -mtime -3600 -exec rm {} /;
查找guest用户的以avi或者rm结尾的文件并删除掉
find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} /;
查找的不以java和xml结尾,并7天没有使用的文件删除掉
find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} /;
统计当前文件个数
ls /usr/bin|wc -w
显示当前目录下2006-01-01的文件名
ls -l |grep 2006-01-01 |awk '{print $8}'
压缩
解压缩 xxx.tar.gz
tar -zxvf xxx.tar.gz
解压缩 xxx.tar.bz2
tar -jxvf xxx.tar.bz2
压缩aaa bbb目录为xxx.tar.gz
tar -zcvf xxx.tar.gz aaa bbb
压缩aaa bbb目录为xxx.tar.bz2
tar -jcvf xxx.tar.bz2 aaa bbb
Nautilus
显示隐藏文件
Ctrl+h
显示地址栏
Ctrl+l
特殊 URI 地址
* computer:/// - 全部挂载的设备和网络
* network:/// - 浏览可用的网络
* burn:/// - 一个刻录 CDs/DVDs 的数据虚拟目录
* smb:/// - 可用的 windows/samba 网络资源
* x-nautilus-desktop:/// - 桌面项目和图标
* file:/// - 本地文件
* trash:/// - 本地回收站目录
* ftp:// - FTP 文件夹
* ssh:// - SSH 文件夹
* fonts:/// - 字体文件夹,可将字体文件拖到此处以完成安装
* themes:/// - 系统主题文件夹
查看已安装字体
在nautilus的地址栏里输入”fonts:///“,就可以查看本机所有的fonts
程序
详细显示程序的运行信息
strace -f -F -o outfile
日期和时间
设置日期
#date -s mm/dd/yy
设置时间
#date -s HH:MM
将时间写入CMOS
hwclock --systohc
读取CMOS时间
hwclock --hctosys
控制台
不同控制台间切换
Ctrl + ALT + ←
Ctrl + ALT + →
指定控制台切换
Ctrl + ALT + Fn(n:1~7)
控制台下滚屏
SHIFT + pageUp/pageDown
控制台抓图
setterm -dump n(n:1~7)
数据库
mysql的数据库存放在地方
/var/lib/mysql
从mysql中导出和导入数据
mysqldump 数据库名 > 文件名 #导出数据库
mysqladmin create 数据库名 #建立数据库
mysql 数据库名 < 文件名 #导入数据库
忘了mysql的root口令怎么办
sudo /etc/init.d/mysql stop
sudo mysqld_safe --skip-grant-tables &
sudo mysqladmin -u user password 'newpassword''
sudo mysqladmin flush-privileges
修改mysql的root口令
sudo mysqladmin -uroot -p password '你的新密码'
其它
下载网站文档
wget -r -p -np -k http://www.21cn.com
· -r:在本机建立服务器端目录结构;
· -p: 下载显示HTML文件的所有图片;
· -np:只下载目标站点指定目录及其子目录的内容;
· -k: 转换非相对链接为相对链接。
如何删除Totem电影播放机的播放历史记录
rm ~/.recently-used
如何更换gnome程序的快捷键
点击菜单,鼠标停留在某条菜单上,键盘输入任意你所需要的键,可以是组合键,会立即生效;
如果要清除该快捷键,请使用backspace.
*******************************************************************************************
转帖完毕
本来,对于linux操作系统,我是不大追求新的,一方面是自己的机器太老了,一方面是没有需要。所以,我家里的redhat linux9.0可能用了都有1年了也没有去动过。但是,这几天,我把redhat linux9.0去掉了,用硬盘iso文件(ubuntu-6.06-alternate-i386.iso)安装ubuntu的方法安装了Ubuntu6.06桌面版。
我为什么去掉redhat linux9.0呢?套用一位linuxsir.org上的朋友的话是“现在谁还用这”。
当我编译安装一个新的软件时,总是告诉我这样那样的库过时,要升级;还有前一段时间在linux下用得好好的MilyQQ和LumaQQ不知是安装了(或升级了)什么东西的缘故,突然一齐罢工都不能用了,我又畏惧去找原因,生怕又有一大堆东西要掌握,而我现在的重点不在于此;然后就是我安装了firefox的flash 9.0插件后,firefox只要一浏览有flash的网页往往就会崩溃。于是,我终于要下决心离开redhat linux9.0了。本来想找它的后续桌面版Fedora,但是Fedora的光盘有六张(我不知道到底需要几张光盘才能安装它?也不知道Fedora能不能进行硬盘安装?),我自己原来下过Ubuntu的硬盘iso安装文件,也在单位的P4 1.7G + 256M的机器上用过几天Ubuntu(因为我嫌它运行慢了和有点不适应它的“大包大揽”的自动化安装方式和它的默认UTF-8的locale编码,后来就没有用了),只有约700M大小,所以我就用Ubuntu了。
下面分享一下我用硬盘iso文件安装Ubuntu的经验。具体步骤在上面提到的那篇日记中有:用硬盘iso文件(ubuntu-6.06-alternate-i386.iso)安装ubuntu的方法
其中要注意的是:
1)、要选英文安装语言,以后安好了在安装中文包;我选中文安装语言时,出现了安装不能继续前进的问题,也不知道是不是语言问题引起的,反正是第二次选择英文安装语言后没有出现这个问题了;
2)、原来的/home(用户数据)和/usr/local(用户程序)分区,在安装程序分区时直接挂载到相应的挂载点,并选择“keep data existed”(大概是这样,意思是保持原来的数据不变)就行了;
3)、如果安装grub不成功时,重复安装一次“基本系统”(英文大概是“base system”吧)就成了(我试过两次都是这样);
4)、grub命令中的root (hd1,0)是要确定vmlinuz和initrd.gz(或initrd.img之类)文件所在的分区,一般来说是boot分区,如果没有划分boot分区(听说这样不科学,不过我就是这样的:))那就是根分区(/)(例如:在根分区下作了/boot目录下的vmlinuz和initrd.img文件的链接为/vmlinuz和/initrd.img);我的认识就是这样的,如果哪位大侠发现有什么错漏之处还望指点一二,谢谢。
5)、下面这个问题害得我刚装好Ubuntu一天又在今天中午重新安装Ubuntu了。
我下载了一个zhcon0.2.6的deb包安装(Ubuntu仓库里的zhcon0.2.3过时了,而且在我的系统上不能工作),报告说libc6版本低了,我又下载一个最新的libc6的deb包准备安装,却又报告缺哪个包。。。,又缺哪个包。。。
然后我准备用Ubuntu的新得立包管理系统更新libc6,报告3 broken,不能更新,而且快捷菜单里只有卸载的选项,一选择卸载又有许多与libc6有关的东西要更改。。。弄来弄去,就是不能继续更新libc6了。我知道如果我花时间去找解决方法也找得快。但是,我感觉不如重新装来得快:)
我感觉这是我不能适应Ubuntu安装方式的原因,牵涉面太宽了,而且这种自动化的方式使我手动控制变得有点不太方便。也许是没有深入Ubuntu的原因吧?
不过,从这个事件我得到一个教训,在Ubuntu下,用新得立自动包管理方式不能安装的东西,不要尝试用deb包去安装,如果deb包的东西打破了新得立系统的统一管理方式可能会有麻烦(像我碰到的那样)。这时,我觉得,最好的方式还是从源码编译手动安装的好(我还没有试着在ubuntu下编译安装zhcon0.2.6,但在redhat linux9.0下成功的)。
6)、我感觉AMD Duron 700 + 384M的机器比原来单位上的P4 1.7G + 256M的机器跑Ubuntu桌面版还要快点,可能是前者的内存多点吧?
7)、每个系统都有它自己的脾气,如果我们摸准了它的脾气,它就会乖乖听话,给我们卖力工作的:)
Windows XP操作系统现在在搞正版认证,如果你在自动更新中下载了正版认证的更新,如果你是盗版的Windows XP,那么,你的系统就会被盖上一个戳,标记为盗版,告诉你是盗版软件的受害者。还有,如果你到Microsoft的网站去下载新版的IE7,就会要求你先进行正版认证。我想,我坚持把linux作为自己的工作系统是应该不会错的,不为别的,清静,省心,省钱,还是正版:)
批量更改QQ聊天场景mp3音乐文件名为其所在目录名
QQ的聊天场景中(在目录:IMScene/Scene中)的mp3音乐文件名是像这样的E00001.mp3的符号命名(老婆原来刻苦聊天时在聊天场景中攒下了200首mp3,IMScene目录有700多M),我把这些文件在linux下mp3blaster下播放时看不到音乐的中文文件名。碰巧聊天场景中的每一个目录的名字就代表了其下的音乐的名字,于是,我花了一个下午写了下面这个bash脚本来把mp3音乐的名字改成跟它的目录名一样。一方面是有了中文名字的音乐文件,一方面学习一下linux的bash脚本写作。我想,在windows下用批处理脚本也应该能完成这个工作。但是我学电脑的时候已经过了microsoft的dos时代,就没有学过批处理。倒是linux下的批处理好像还在类unix世界广泛使用。
当然,我很少用和写bash脚本,如果哪位同志看到其中的错误、不当、和可以改进之处请不吝赐教。谢谢。
使用的关键知识点:
1)、for循环遍历目录;
2)、文件相关判断;
3)、字符串比较与数字比较的区别;
4)、对文件名带中文和文件名中带有空格的文件进行操作时,必须对文件名加上双引号;
一些小技巧:
1)、控制脚本只在这个目录执行一次;
2)、控制一个目录下多个类似文件的改名;
|
1、备份成rar的分卷压缩格式,生成两个(若有分卷的rar压缩文件会不止两个)备份文件,如:
db20070325092032.sql,db20070325092032.sql.rar
|
**********************************************************************
2、备份成*.tar.bz2的压缩格式,生成两个备份文件,如:
db20070325092032.sql,db20070325092032.sql.tar.bz2
|
昨天无意查看到/tmp目录竟占了400M的空间,看到里面全是一个乱七八糟的东西。联想到windows的temp目录的作用。就把/tmp目录删除了,想系统启动时可能就重新建了这个目录。结果系统只能启动到控制台模式;
又用mkdir /tmp建了这个目录,结果系统在控制台模式登录和X windows模式登录状态间反复切换,不能进入系统;
后来在网上查了一下,改变了/tmp目录的权限为:chmod a+rwx,o+t /tmp,即为:
drwxrwxrwt 4 root root 4096 3月 16 10:18 tmp
系统恢复正常。
具体分析原因如下:
正常情况下,/tmp目录的权限是:
drwxrwxrwt 4 root root 4096 3月 16 10:18 tmp
它表示所有的用户都可以在其中建立文件(或目录),即任何人都对tmp目录拥有“写权限”,但是除非tmp目录的所有者和文件的所有者,其他人不能在/tmp目录下改写(或删除、重命名)别人的文件(或目录)。
如果你删除了系统的tmp目录,又用mkdir /tmp建立这个目录,那么根据umask的规定,默认建议的目录的权限是:
drwxr-xr-x 3 root root 4096 3月 16 11:31 tmp
那么其他人就不能在/tmp目录下建立文件了;这时,系统将出现故障(如:不能启动或不能进入x windows);
如果你用:chmod a+w /tmp改变/tmp目录的权限为:
drwxrwxrwx 3 root root 4096 3月 16 11:34 tmp
那么任何人都可以删除别人在/tmp目录下的文件了,包括删除root在/tmp目录下建立的文件;
如果用:chmod o+t /tmp为/tmp目录加了粘滞位t,那么其他人就不能在tmp目录下改写(或删除、重命名)别人的文件(或目录),起到了/tmp目录的作用。
另外,“suid”和“sgid”特殊标志位可以使普通用户运行一个程序,使这个程序访问或修改只有文件所有者或root用户才能直接访问或修改的文件,当然前提是这个普通用户对这个文件的某个部分拥有相应的权限。
详情见转帖:linux的权限和所有权模型(转帖): http://java.learndiary.com/diaries/3110.jsp
本人的系统是redhat linux9.0+amd duron 700。在网上查到有人说删除某些linux发行版本的/tmp目录下的文件会使系统不能正常工作,也不知道是不是真的。不过,这次也再一次给我一个教训,对linux操作系统不熟悉的地方不能按照windows的模式想当然的操作。尤其是系统是正式的工作系统,应该坚持“宁滥勿缺”的原则,不要想当然的删除你不熟悉的文件或目录。
转载者前言:
本来这些内容在linux的在线man文档或info文档中都有非常详细的解释,无奈英文不行,还是不能全面理解linux的权限系统,只好上网查了一下,收集到一篇比较完整的介绍转帖于此。其中的内容涉及:一般w,r,x标志位控制,特殊的suid,sgid,t标志位控制,umask控制;
linux的权限系统是使用linux的重要基础,如果不能对其所有权模型有比较透彻的理解,就会对正确理解和使用系统中的一些东西造成障碍,比如我碰到的:删除linux的/tmp目录引起的不能正常登录系统的故障: http://java.learndiary.com/diaries/3112.jsp
另外,对权限系统目前还有如下的疑问:
1)、大写“X”标志位是做什么用的?
2)、passwd程序怎样控制用户只访问/etc/passwd文件中用户能够访问的部分?
转帖正文:
******************************************************************************
转自:Linux的权限和所有权模型:http://linux.chinaitlab.com/safe/38178.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
一个用户、一个组
我们来看一看 Linux 权限和所有权模型。我们已经看到每个文件属于一个用户和一个
组。这正是 Linux 中权限模型的核心。您可以在 ls -l 清单中查看用户和组:
$ ls -l /bin/bash
-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash在这个特殊
的示例中,/bin/bash 可执行文件属于 root 用户,并且在 wheel 组中。Linux 权限模型
通过允许给每个文件系统对象设置三种独立的权限级别来工作—它们为文件的所有者、文
件的组以及所有其他用户。
理解“ls -l”
我们来看一看我们的 ls -l 输出,检查一下这个清单的第一栏:
$ ls -l /bin/bash-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /
bin/bash第一个字段 -rwxr-xr-x 包含该特殊文件的权限的符号表示。该字段中的首字符
(-)指定该文件的类型,本例中它是一个常规文件。其它可能的首字符还有:
“d”目录“l”符号链接“c”字符专门设备文件“b”块专门设备文件“p”先进先出
“s”套接字三个三元组$ ls -l /bin/bash-rwxr-xr-x 1 root wheel
430540 Dec 23 18:27 /bin/bash该字段的其余部分由三个三元组字符组成。第一个三元字
符组代表文件所有者的权限,第二个代表文件的组的权限,第三个代表所有其他用户的权
限:
"rwx""r-x""r-x"上面,r 表示允许读(查看文件中的数据),w 表示允许写(修改文
件以及删除),x 表示允许“执行”(运行程序)。将所有这些信息放在一起,我们可以
发现每个人都能够读该文件的内容和执行该文件,但是只允许文件所有者(root 用户)可
以以任何方式修改该文件。因此,虽然一般用户可以复制该文件,但是只允许 root 用户
更新或删除它。
我是谁?在我们看怎样改变文件的用户所有权和组所有权之前,我们首先来看一看怎
样得知您当前的用户标识和组成员资格。除非最近您使用过 su 命令,否则您当前的用户
标识是您用来登录系统的用户标识。但是,如果您经常使用 su,您可能不记得您当前有效
的用户标识。要查看用户标识,输入 whoami:# whoamiroot# su drobbins$
whoamidrobbins我在哪一组?要看看您属于哪一组,使用 group 命令:$ groupsdrobbins
wheel audio在上面的示例中,我是 drobbins、wheel 和 audio 组的成员。如果您想看看
其他用户在什么组,指定他们的用户名作为参数:
$ groups root daemonroot : root bin daemon sys adm disk wheel floppy
dialout tape videodaemon : daemon bin adm改变用户和组所有权为了改变文件或其它文
件系统对象的所有者或组,分别使用 chown 或 chgrp。这两个命令都要一个用户名或组名
作参数,后面跟上一个或多个文件名。
# chown root /etc/passwd# chgrp wheel /etc/passwd您还可以用 chown 命令的另
一种形式同时设置所有者和组:
# chown root.wheel /etc/passwd除非您是超级用户,否则您不可以使用 chown,然
而任何人都可以使用 chgrp 来将文件的组所有权改为他们所属的组。
递归的所有权改变chown 和 chgrp 都有一个 -R 选项,该选项可以用来告诉它们递归
地将所属权和组改变应用到整个目录树中。例如:# chown -R drobbins /home/drobbins
介绍 chmodchown 和 chgrp 可以用来改变文件系统对象的所有者和组,而另一个程序—叫
做 chmod —用来改变我们可以在 ls -l 清单中看到的 rwx 权限。chmod 带有两个或多个
参数:“mode”,描述怎样改变权限,后面跟将会受到影响的文件或文件列表:$ chmod
+x scriptfile.sh在上面的示例中,我们的“mode”是 +x。您可能会猜到,+x 模式告诉
chmod,使该特殊文件对于用户、组以及其它任何人都是可执行的。如果我们想要除去一个
文件的所有执行权限,我们应该这样做: $ chmod -x scriptfile.sh用户/组/其他粒度
到此,我们的 chmod 示例已经影响到了所有三个三元组—用户、组和所有其他用户。通常
,一次只修改一个或两个三元组很方便。要这样做,只需要在 + 或 - 符号之前,给您想
要修改的特定的三元组指定符号字符。对于“用户”三元组使用 u,对于“组”三元组使
用 g,对于“其他/每个人”使用 o:$ chmod go-w scriptfile.sh我们刚除去了组和所
有其他用户的写权限,而保留“所有者”权限不动。重新设置权限除了交替打开和关闭权
限位以外,我们还可以一起重新设置它们。通过使用 = 操作符,我们可以告诉 chmod 我
们要指定权限和取消别的权限:$ chmod =rx scriptfile.sh上面,我们只设置了所有的“
read”和“execute”位,没有设置所有的“write”位。如果您仅仅想重新设置特定的三
元组,您可以像下面这样,在 = 之前指定该三元组的符号名:
$ chmod u=rx scriptfile.sh
数字模式
直到现在为止,我们使用了叫做“符号”的模式来用 chmod 指定权限的改变。然而,
指定权限还有一种普遍使用的方法—使用 4 位八进制数。使用叫做数字权限语法的语法,
每一位代表一个权限三元组。例如,在 1777 中,777 设置本章我们所讨论的“owner”、
“group”和“other”标志。1 用来设置专门的权限位,我们将在本章的结束部分讲到。
这个图表说明了怎样解释第二到四位(777):
模式数字
rwx 7
rw- 6
r-x 5
r-- 4
-wx 3
-w- 2
--x 1
--- 0
数字权限语法
当您需要给一个文件指定所有权限时,数字权限语法特别有用,比如在下面的示例中
:
$ chmod 0755 scriptfile.sh
$ ls -l scriptfile.sh
-rwxr-xr-x 1 drobbins drobbins 0 Jan 9 17:44 scriptfile.sh
在该示例中,我们使用了 0755 模式,它展开为一个完整的权限设置“-rwxr-xr-x”
。
Umask
当进程创建了新文件时,它指定新文件应该具有的权限。通常,所请求的模式是 0666
(每个人可读和可写),它比我们希望的具有更多的权限。幸运的是,不管什么时候创建
了新文件,Linux 将参考叫做“umask”的东西。系统用 umask 值来将初始指定的权限降
低为更合理、更安全的权限。您可以通过在命令行中输入 umask 来查看您当前的 umask
设置:
$ umask
0022
Linux 系统上,umask 的缺省值一般为 0022,它允许其他人读您的新文件(如果他们
可以得到它们),但是不能进行修改。为了在缺省的情况下使新文件更安全,您可以改变
umask 设置: $ umask 0077umask 将确保组和其他用户对于新创建的文件绝对没有任何权
限。那么,umask 怎样工作呢?与文件的“常规”权限不同,umask 指定应该关闭哪一个
权限。我们来参阅一下我们的“模式到数字”映射表,从而使我们可以理解 0077 的
umask 的意思是什么:模式数字 rwx 7 rw- 6 r-x 5 r-- 4 -wx 3 -w- 2 --x 1 --- 0 使
用该表,0077 的最后三位扩展为 ---rwxrwx。现在,请记住 umask 告诉系统禁用哪个权
限。根据推断,我们可以看到将关闭所有“组”和“其他”权限,而“用户”权限将保留
不动。
介绍 suid 和 sgid
当您最初登录时,将启动一个新的 shell 进程。您已经知道,但是您可能还不知道这
个新的 shell进程(通常是 bash)使用您的用户标识运行。照这样,bash 程序可以访问
所有属于您的文件和目录。事实上,作为用户,我们完全依靠其它程序来代表我们执行操
作。因为您启动的程序继承了您的用户标识,因此它们不能访问任何不允许您访问的文件
系统对象。
例如,一般用户不能直接修改 passwd 文件,因为“write”标志已经对除“root 用
户”以外的每个用户关闭:
$ ls -l /etc/passwd
-rw-r--r-- 1 root wheel 1355 Nov 1 21:16 /etc/passwd
但是,一般用户确实需要在他们需要改变其密码的任何时候,能够修改 /etc/passwd
(至少间接地)。但是,如果用户不能修改该文件,究竟怎样完成这个工作呢?
Suid
幸好,Linux 权限模型有两个专门的位,叫做“suid”和“sgid”。当设置了一个可
执行程序的“suid”这一位时,它将代表可执行文件的所有者运行,而不是代表启动程序
的人运行。现在,回到 /etc/passwd 问题。如果看一看 passwd 可执行文件,我们可以看
到它属于 root 用户:
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root wheel 17588 Sep 24 00:53 /usr/bin/passwd
您还将注意到,这里有一个 s 取替了用户权限三元组中的一个 x。这表明,对于这个
特殊程序,设置了 suid 和可执行位。由于这个原因,当 passwd 运行时,它将代表 root
用户执行(具有完全超级用户访问权),而不是代表运行它的用户运行。又因为 passwd
以 root 用户访问权运行,所以能够修改 /etc/passwd 文件,而没有什么问题。
suid/sgid 告诫说明
我们看到了 suid 怎样工作,sgid 以同样的方式工作。它允许程序继承程序的组所有
权,而不是当前用户的程序所有权。这里有一些关于 suid 和 sgid 的其它的但是很重要
的信息。首先,suid 和 sgid 占据与 ls -l 清单中 x 位相同的空间。如果还设置了 x
位,则相应的位表示为 s(小写)。但是,如果没有设置 x 位,它将表示为 S(大写)。
另一个很重要的提示:在许多环境中,suid 和 suid 很管用,但是不恰当地使用这些位可
能使系统的安全遭到破坏。最好尽可能地少用“suid”程序。passwd 命令是为数不多的必
须使用“suid”的命令之一。
改变 suid 和 sgid
设置和除去 suid 与 sgid 位相当简单。这里,我们设置 suid 位:
# chmod u+s /usr/bin/myapp
此处,我们从一个目录除去 sgid 位。我们将看到 sgid 位怎样影响下面几屏中的目
录:
# chmod g-s /home/drobbins
权限和目到此为止,我们从常规文件的角度来看权限。当从目录的角度看权限时,情
况有一点不同。目录使用同样的权限标志,但是它们被解释为表示略微不同的含义。对于
一个目录,如果设置了“read”标志,您可以列出目录的内容;“write”表示您可以在目
录中创建文件,“execute”表示您可以进入该目录并访问内部的任何子目录。没有“
execute”标志,目录内的文件系统对象是不可访问的。没有“read”标志,目录内的文件
系统对象是不可查看的,但是只要有人知道磁盘上对象的完整路径,就仍然可以访问目录
内的对象。目录和 sgid如果启用了目录的“sgid”标志,在目录内创建的任何文件系统对
象将继承目录的组。当您需要创建一个属于同一组的一组人使用的目录树时,这种特殊的
功能很管用。只需要这样做:
# mkdir /home/groupspace
# chgrp mygroup /home/groupspace
# chmod g+s /home/groupspace
现在,mygroup 组中的所有用户都可以在 /home/groupspace 内创建文件或目录,同
样,他们也将自动地分配到 mygroup 的组所有权。根据用户的 umask 设置,新文件系统
对象对于 mygroup 组的其他成员来说,可以或不可以是可读、可写或可执行的。目录和删
除缺省情况下,Linux 目录以一种不是在所有情况下都很理想的方式表现。一般来说,只
要对一个目录有写访问权,任何人都可以重命名或删除该目录中的文件。对于个别用户使
用的目录,这种行为是很合理的。但是,对于很多用户使用的目录来说,尤其是 /tmp 和
/var/tmp,这种行为可能会产生麻烦。因为任何人都可以写这些目录,任何人都可以删除
或重命名任何其他人的文件—即使是不属于他们的!显然,当任何其他用户在任何时候都
可以输入“rm -rf /tmp/*”并损坏每个人的文件时,很难把 /tmp 用于任何有意义的文件
。所幸,Linux 有叫做“粘滞位”(sticky bit)的东西。当给 /tmp 设置了粘滞位(用
chmod +t),唯一能够删除或重命名 /tmp 中文件的是该目录的所有者(通常是 root 用
户)、文件的所有者或 root 用户。事实上,所有 Linux 分发包都缺省地启用了 /tmp 的
粘滞位,而您还可以发现粘滞位在其它情况下也很管用。难以理解的第一位总结本章,我
们最后来看一看数字模式的难以理解的第一位数。您可以看到,这个第一位数用来设置
sticky、suid 和 sgid 位:
suid sgid sticky 模式数字 on on on 7 on on off 6 on off on 5 on off off 4
off on on 3 off on off 2 off off on 1 off off off 0
这里有一个怎样用 4 位数字模式来设置一个目录的权限的示例,该目录将由一个工作
组使用: # chmod 1775 /home/groupfiles请想一想 1755 数字模式权限设置的含义。
相关产品与培训
● 相关文章 ● 推荐文章
避其锋芒 Linux操作系统入侵实例
构建一个基于软盘的防火墙
用Linux防火墙伪装抵挡黑客恶意攻击
用rsync从Linux到Windows远程备份(组图)
解决新的SELinux安全级别产生问题(图)
linux SSH 的一些安全小技巧
Linux下PhpMyAdmin程序目录的安全管理
Linux网络安全经验之谈
防火墙 Linux 数据包捕获模块包过滤
巧妙利用Linux系统IP伪装抵住黑客攻击
********************************************************************************
转帖完毕
在用fdisk /mbr时,本来想对机器上的第二块硬盘作清除主引导记录的操作,结果却把装有linux操作系统的第一块硬盘的主引导记录清掉了。现在还不知道fdisk /mbr在两块硬盘上操作的有关问题?
恢复需要进入linux的grub命令行程序,可以从两个途径进入。
一是从安装光盘设置为从光盘启动,进入安装界面后输入linux rescue,进行一系列语言、键盘等的设置后就进入了shell命令行,这时就可以进入grub程序了。
一是从其它途径(如grub启动软盘、从dos引导)进入系统工作状态后进入grub程序。
然后就是输入 grub命令如下:
grub>root (hd0,0) (hd0指第一个硬盘,后面的0指的是/boot/grub目录所在的分区,而不是指的是/所在的分区,如果你的/boot和/分别在两个分区上,就不要弄错了)
grub>setup (hd0) (是指把grub引导程序写入第一个硬盘的主引导记录,如果写成(hd0,0)是指把引导记录写入第一个硬盘的第一个分区的引导扇区中)
执行成功后会显示success的信息。
不过,我的这个redhat linux9.0操作系统挂在amd毒龙700上可以用这个方法把grub恢复到MBR中,但挂在486DX100却不行,启动报告grub read error,要用setup (hd0,0)写入分区的引导扇区才行,不知道是怎么一回事?
详见作者的博客:喋喋不休: http://spadger.blog.com.cn
现在最新的版本是MilyQQ3.0。现在的版本是c++写的,速度很快。以前的版本是java写的。
我试了一下,使用MilyQQ3.0,在我的486dx100+redhat linux9.0的真正古董级机器上也能流畅的运行,很不错。
在linux下使用前需要改变这个软件的权限:chmod a+x MilyQQ (赋与所有用户对这个软件的可执行权限)
我感觉这个软件的主要使用者还是经常使用linux控制台的人,比如像我,因为电脑太老,只能使用linux的控制台。而经常使用windows图形界面和linux图形界面的人,估计都不大会使用这个软件。
本地下载MilyQQ3.0:
附件:MilyQQ3.0.zip,316958 bytes
原创地下载MilyQQ3.0:
附件:MilyQQ3.0.zip,316958 bytes
昨天在我的486+redhat linux9.0的老机上装了一个mysql4.1.0的客户端,不想连到远程数据库时,一执行use dbname;程序就会退出,报告什么sem* fault错误;
今天下载了一个mysql-standard-4.1.22-pc-linux-gnu-i686-icc-glibc23.tar.gz,解压到/usr/local,作好链接什么的,一执行mysql命令,报告缺少/usr/lib/libstdc++.so.6文件。查了一下,redhat linux9.0配的rpm包是libstdc++-3.2.2-5.i386.rpm,而不是有/usr/lib/libstdc++.so.6的libstdc++-3.4(好像是这样的)。不想去下载源码在这么老的机器上编译。于是,试着用命令: ln -s /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.6用libstdc++.so.5冒充libstdc++.so.6欺骗mysql4.1.21,结果执行mysql -hhostname -uusername -p竟然连接成功了。
不过不知道这种欺骗手段有没有什么负作用呢?