Linux一句话教程4

来源:互联网 发布:教师网络培训研修计划 编辑:程序博客网 时间:2024/05/18 02:06
----------------------------程序开发篇--------------------------
3001 linux下调试core文件(陈绪)
gdb <progname> <core>
<progname>:出错产生core dump的可执行程序。
<core>: core dump的文件名,缺省是“core”

3002 gcc abc.c得到的a.out不能运行(陈绪)
./a.out

3003 c++ 编译时为什么出错信息说cout没定义(陈绪)
include头文件完后加入 using namespace std;

3004 新编译生成的gcc ,使用的标准连接库都在/usr/local/lib 下了,但使用的缺省的连接路径是 /usr/lib 怎样添加?(除了在每次编译时 增加 -L /usr/local/lib 以外)(sakulagi, hutuworm)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
写到~/.bash_profile里面。
增加一种简便办法:
将/usr/local/lib加入/etc/ld.so.conf,然后运行一次ldconfig

3005 RH9下GCC的安装(一起走过的日子,hutuworm)
三种方法选一:
(1)利用CD上rpm安装
CD-1:compat-gcc-7.3-2.96.118.i386.rpm
CD-1:compat-gcc-c++-7.3-2.96.118.i386.rpm
CD-1:libgcc-3.2.2-5.i386.rpm
CD-2:compat-gcc-g77-7.3-2.96.118.i386.rpm
CD-2:compat-gcc-java-7.3-2.96.118.i386.rpm
CD-2:compat-gcc-objc-7.3-2.96.118.i386.rpm
CD-2:gcc-3.2.2-5.i386.rpm
CD-2:gcc-c++-3.2.2-5.i386.rpm
CD-2:gcc-g77-3.2.2-5.i386.rpm
CD-2:gcc-gnat-3.2.2-5.i386.rpm
CD-2:gcc-java-3.2.2-5.i386.rpm
CD-2:gcc-objc-3.2.2-5.i386.rpm
比如碰到系统提示:
warning : gcc-3.2.2-5.i386.rpm : V3 DSA signature :MOKEY key ID db42a60e
error : Failed dependencies :
binutils >=2.13.90.0.18-9 is needed by gcc-3.2.2-5
glibc-devel >=2.3.2-11.9 is needed by gcc-3.2.2-5...
就先安裝glibc-devel包,依此类推
(2)更好的方法就是在X-window下选“主菜单”──>“系统设置”──>“添加/删除应用程序”──>“开发工具”中的gcc并安装它
(3) up2date gcc便可自动解决dependency问题

3006 shell脚本为何无法运行(GOD_Father)
第一,脚本权限要为可执行 #chmod +x test.sh
第二,脚本所在的目录在环境变量PATH中,或者直接执行 #./test.sh

3007 查看某个文件被哪些进程在读写(bjweiqiong)
lsof 文件名

3008  查看某个进程打开了哪些文件(bjweiqiong)
lsof –c 进程名
lsof –p 进程号

3009  lsof是什么意思(bjweiqiong)
list open files

3010 lsof用法小全(bjweiqiong)
lsof abc.txt 显示开启文件abc.txt的进程
lsof -i :22 知道22端口现在运行什么程序
lsof -c nsd 显示nsd进程现在打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4  显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况
语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4位置
service --> /etc/service中的 service name (可以不只一個)
port --> 埠號 (可以不只一個)
例子: TCP:25 - TCP and port 25
@1.2.3.4 - Internet IPv4 host address 1.2.3.4
tcp@ohaha.ks.edu.tw:ftp - TCP protocol host:ohaha.ks.edu.tw service name:ftp
lsof -n 不将IP转换为hostname,预设是不加上-n参数
例子: lsof -i tcp@ohaha.ks.edu.tw:ftp -n
lsof -p 12  看进程号为12的进程打开了哪些文件   
lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新
-r,lsof会永远不断的执行,直到收到中断讯号
+r,lsof会一直执行,直到没有档案被显示
例子:不断查看目前ftp连接的情况:lsof -i tcp@ohaha.ks.edu.tw:ftp -r
lsof -s 列出打开文件的大小,如果没有大小,则留下空白
lsof -u username  以UID,列出打开的文件

3011 让某用户只能ftp,不能ssh/telnet(bjweiqiong)
vi /etc/passwd
将用户行中的/bin/bash改为/bin/false即可

----------------------------经典图书篇--------------------------
4001 GNU/Linux高级网络应用服务指南(陈绪)
linuxaid网站
机械工业出版社
优点:又全又精,全都是实战之作
缺点:针对版本较低,为redhat 6.2

4002 Linux Apache Web Server管理指南(Linux Apache Web Server Administration)(陈绪)
Charles Aulds 马树奇/金燕译
电子工业出版社
优点:目前我还没有发现哪个关于apache的问题这本书没有讲过
缺点:针对1.3.x,最新的针对2.0.*的英文版已出,中文版待出

4003 Linux内核情景分析(陈绪)
毛德操/胡希明
浙江大学出版社
优点:太透彻了,没法不懂
缺点:还是版本问题,内核更新太快了,不过还是必读

4004 Unix环境高级编程(陈绪)
Richard Stevens
机械工业出版社
优点:博大精深
缺点:初学者是很难理解的,否则怎么叫《高级编程》呢?

4005 编程精粹--Microsoft编写优质无错c程序秘诀(陈绪)
Steve Maguire
电子工业出版社
优点:不说了,作者是微软的资深工程师
缺点:很难找了,1994年出的

4006 Understanding the Linux Kernel, 2nd Edition(hutuworm)     
Daniel P. Bovet & Marco Cesati
O'Reilly出版社
读了这本书之后,你就会明白在什么情况下Linux具有最佳的性能,以及它如何面对挑战,在各种环境中提供进程调度、文件访问和内存管理时的优良的系统响应。作者通过解释其重要性来引入每一个题目,并将内核操作与Unix程序员和用户熟悉的系统调用或实用程序联系起来。

4007 UNIX操作系统教程(英文版)(弱智)     
Syed Mansoor Sarwar等
机械工业出版社
特点:浅显易懂,着重unix基础概念和整体理解,顺便复习英语。
另外:机械工业出版社已经出版了中文版,名称:UNIX 教程

4008 UNIX编程环境(弱智)     
Brian W.Kernighan, Rob Pike  陈向群等译
机械工业出版社
特点:浅显,深入浅出讲解如何使用UNIX及各种工具,简单介绍Unix编程环境;对比“UNIX环境高级编程”,此书适合新手入门。

4009 The Art of UNIX Programming(hutuworm)     
Eric Steven Raymond
http://catb.org/~esr/writings/taoup/html/
优点: E.S. Raymond的经典著作

4010 unix网络编程--卷一 套接口API和X/Open传输接口API(slg1972)     
Richard Stevens
清华大学出版社
优点:详细地讲解unix网络的编程

4011 unix网络编程--卷二 进程间通讯(slg1972)
Richard Stevens
清华大学出版社
优点:详细讲解unix的进程之间,线程之间的关系,及各种不同标准的进程编程的异同

4012 unix网络编程--卷三 应用程序(slg1972, hutuworm)     
未出,因为Richard Stevens大师英年早逝,再也不可能完成这计划中的第三卷了。据说其未竟稿可能由Gary R. Wright整理续写出来,但是自大师驾鹤以来一直杳无音信

4013 基于C++ CORBA高级编程(slg1972)
Michi Henning,Steve Vinoski
清华大学出版社
优点:中间件的好书,通向corba应用的必备资料。

4014 unix linux网管通鉴(odin_free)
电子版的,包括本版精华
优点:我见过关于unix知识最全面、最实用的chm文档,相当于一个小型网站,里面支持全文检索,推荐所有还没有的兄弟姐妹们下载

4015 www.chinaoy.com(aomin5555)
不错,挺全的,图书下载的好网址:
redhat linux9.0 官方入门指南
·redhat linux9.0 官方安装指南
·redhat linux9.0 官方定制设置手册
·redhat linux基础教程
·Linux 参考大全
·清华论坛linux精华
·Linux系统管理员指南中文手册
·Linux网站建设和维护全攻略
·redhat linux8.0 安装手册
·Linux环境database管理员指南

4016 Linux Advanced Routing & Traffic Control(hutuworm)
专门讲LINUX IPROUTE2的书,大概100页左右,www.lartc.org
中文版在:http://www.lartc.org/LARTC-zh_CN.GB2312.pdf

4017 Debian User强烈推荐看的书(NetDC)
Debian Reference (Debian参考手册)
http://qref.sourceforge.net/
简体中文版的pdf文档。
http://qref.sourceforge.net/Debian/reference/reference.zh-cn.pdf

4018 高级Bash脚本编程指南--中文版(hutuworm)
Mendel Cooper著
http://www.linuxpk.com/doc/abs/
优点:Bash编程的圣经,而且该书作者不断在更新其内容,一两个月就会翻新一个版本,值得一读,一读再读

4019 JAVA完美经典(陈绪)
江义华 编著 林彩瑜 文编
中国铁道出版社
定价:65元
优点:不愧是台湾同胞的力作,讲解清楚,知识全面,我看了之后,感到很有收获

4020 Thinking in JAVA(陈绪)
Burce Eckel著
到http://www.BruceEckel.com下载最新版本
优点:经典之作,深入剖析java的核心问题

4021 APACHE2中文手册(陈绪)
Apache官方著
http://www.linuxpk.com/doc/apache/
优点:官方手册,全面深入。

4022 MYSQL中文手册(陈绪)
Mysql官方著
http://www.linuxpk.com/doc/mysql/
优点:官方手册,全面深入。

4023 PHP中文手册(陈绪)
Php官方著
http://www.linuxpk.com/doc/php/
优点:官方手册,全面深入。

4024 VIM中文手册(陈绪)
Vim官方著
http://www.linuxpk.com/doc/vim/
优点:官方手册,全面深入。

----------------------------mysql相关篇--------------------------
5001 mysql的数据库存放在什么地方(陈绪)
1. 如果使用rpm包安装,应该在/var/lib/mysql目录下,以数据库名为目录名
2. 如果源码安装在/usr/local/mysql中,应该在/usr/local/mysql/var中,以数据库名为目录名

5002 从mysql中导出和导入数据(陈绪)
导出数据库
mysqldump 数据库名 > 文件名
导入数据库
mysqladmin create 数据库名
mysql 数据库名 < 文件名

5003 忘了mysql的root口令怎么办(陈绪)
# service mysql stop
# mysqld_safe --skip-grant-tables &
# mysqladmin -u user password 'newpassword''
# mysqladmin flush-privileges

5004 快速安装php/mysql(陈绪)
确保使用系统自带的apache,从安装光盘中找出所有以mysql及php-mysql开头的rpm包,然后运行#rpm -ivh mysql*.rpm php-mysql*.rpm; mysql_install_db; service mysql start

5005 修改mysql的root口令(陈绪,yejr)
大致有2种方法:
1、mysql>mysql -uroot -pxxx mysql
mysql>update user set password=password('new_password') where user='user';
mysql>flush privileges;
2、格式:mysqladmin -u用户名 -p旧密码 password 新密码
#mysqladmin -uroot -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了

5006 如何使用rpm方式安装mysql(yejr)
首先下载合适的rpm包,例如下载了文件 MySQL-5.0.19-0.i386.rpm
用一下方法安装:
#rpm -ivhU MySQL-5.0.19-0.i386.rpm
通常情况下,安装完这个rpm包后,只具备有mysqld服务功能,其它相关的client程序和开发包还需要另外安装
#rpm -ivhU MySQL-devel-5.0.19-0.i386.rpm
#rpm -ivhU MySQL-client-5.0.19-0.i386.rpm

5007 如何安装已经编译好了的mysql二进制包(yejr)
首先下载合适的二进制包,例如下载了文件 mysql-standard-4.1.13-pc-linux-gnu-i686.tar.gz
#groupadd mysql
#useradd -g mysql mysql
#cd /usr/local
#tar zxf mysql-standard-4.1.13-pc-linux-gnu-i686.tar.gz
#ln -s mysql-standard-4.1.13-pc-linux-gnu-i686 mysql
#cd mysql
#scripts/mysql_install_db --user=mysql
#chgrp -R mysql *
#bin/mysqld_safe --user=mysql &
有什么个性化的配置,可以通过创建 /etc/my.cnf 或者 /usr/local/mysql/data/my.cnf,增加相关的参数来实现

5008 如何自己编译mysql(yejr)
以redhat linux 9.0为例:
下载文件 mysql-4.1.13.tar.gz
#tar zxf mysql-4.1.13.tar.gz
#cd mysql-4.1.13
#./configure --prefix=/usr/local/mysql --enable-assembler /
--with-mysqld-ldflags=-all-static --localstatedir=/usr/local/mysql/data /
--with-unix-socket-path=/tmp/mysql.sock --enable-assembler /
--with-charset=complex --with-low-memory --with-mit-threads
#make
#make install
#groupadd mysql
#useradd -g mysql mysql
#chgrp -R mysql /usr/local/mysql/
#/usr/local/mysql/bin/mysqld_safe --user=mysql &
有什么个性化的配置,可以通过创建 /etc/my.cnf 或者 /usr/local/mysql/data/my.cnf,增加相关的参数来实现

5009 如何登录mysql(yejr)
使用mysql提供的客户端工具登录
#PATH_TO_MYSQL/bin/mysql -uuser -ppassword dateabase

5010 mysqld起来了,却无法登录,提示"/var/lib/mysql/mysql.sock"不存在(yejr)
这种情况大多数是因为你的mysql是使用rpm方式安装的,它会自动寻找 /var/lib/mysql/mysql.sock 这个文件,
通过unix socket登录mysql。
常见解决办法如下:
1、创建/修改文件 /etc/my.cnf,至少增加/修改一行
[mysql]
[client]
socket = /tmp/mysql.sock
#在这里写上你的mysql.sock的正确位置,通常不是在 /tmp/ 下就是在 /var/lib/mysql/ 下
2、指定IP地址,使用tcp方式连接mysql,而不使用本地sock方式
#mysql -h127.0.0.1 -uuser -ppassword
3、为 mysql.sock 加个连接,比如说实际的mysql.sock在 /tmp/ 下,则
# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock即可

5011 如何新增一个mysql用户(yejr)
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
mysql>grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
mysql>grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
如果你不想test2有密码,可以再打一个命令将密码消掉。
mysql>grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
另外,也可以通过直接往user表中插入新纪录的方式来实现

5012 如何查看mysql有什么数据库(yejr)
mysql>show databases;

5013 如何查看数据库下有什么表(yejr)
mysql>show tables;

5014 导出数据的几种常用方法(yejr)
1、使用mysqldump
#mysqldump -uuser -ppassword -B database --tables table1 --tables table2 > dump_data_20051206.sql
详细的参数
2、backup to语法
mysql>BACKUP TABLE tbl_name[,tbl_name...] TO '/path/to/backup/directory';
详细请查看mysql手册
3、mysqlhotcopy
#mysqlhotcopy db_name [/path/to/new_directory]

#mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory

#mysqlhotcopy db_name./regex/
详细请查看mysql手册
4、select into outfile
详细请查看mysql手册
5、客户端命令行
#mysql -uuser -ppassword -e "sql statements" database > result.txt
以上各种方法中,以mysqldump最常用

5015 如何在命令行上执行sql语句(yejr)
#mysql -uuser -ppassword -e "sql statements" database

5016 导入备份出来文件的常见方法(yejr)
1、由mysqldump出来的文件
#mysql -uuser -ppassword [database] < dump.sql
2、文件类型同上,使用source语法
mysql>source /path_to_file/dump.sql;
3、按照一定格式存储的文本文件或csv等文件
#mysqlimport [options] database file1 [file2....]
详细请查看mysql手册
4、文件类型同上,也可以使用load data语法导入
详细请查看mysql手册

5017 让mysql以大内存方式启动(陈绪)
将/usr/share/mysql下的某个mysql-*.cnf(如1G内存时为mysql-huge.cnf)拷贝为/etc/mysql.cnf文件,并重启mysql