Linux命令学习与使用2
1.Ctrl+a:跳到命令行首 Ctrl+E: 跳到命令行尾 Ctrl+L:清屏
2.切换用户 su - 用户名
3.更换yum镜像源
1.进入/etc/yum.repos.d 备份CentOS-Base.repo
2.http://mirrors.163.com/选择centos下载CentOS6-Base-163.repo
3.CentOS6-Base-163.repo修改成CentOS-Base.repo
4.运行以下命令生成缓存 yum clean all yum makecache
5.yum grouplist查看安装的软件
4.安装tree,telnet,dos2unix,sysstat,lrzsz
5.关闭selinux 1.修改/etc/selinux/config 改为SELINUX=disabled 2.setenforce 0 临时修改成Permissive,开机启动后会生效
6.修改开机启动模式
1.修改/etc/inittab 文件,改成3命令行模式
2.切换 init (option)
7.chkconfig 查看设置开机软件自动启动
8.修改ssh默认端口:
1.备份/etc/ssh/sshd_config.bak
2.Port 22 ssh默认端口,修改
3.PermitRootLogin yes 修改成no ,禁止root远程登陆
4.PermitEmptyPasswords no 禁止空密码登陆
5.UseDNS yes 改为no 不使用DNS
6./etc/init.d/sshd restart
9.行+gg定位到行
10.visudo 98行配置sudo普通用户的权限 配置NOPASSWD: ALL sudo su -不需要密码
11.netstat -lntup查看网络状态
12.时间同步
13.w查询当前登录的用户
14./etc /etc/init.d 有许多命令服务
15.挂载点--->文件系统的(设备)的入口(新加的设备,磁盘,U盘无法使用要先挂载在一个目录下使用)
16.自己的软件命令可以建立在/usr/local/bin下,可以全局执行
17.file 文件 查看文件类型
18.创建连接文件 ln -s 源文件 新文件名 windows快捷方式类似
19.stat h1.c 查看文件状态
20.dumpe2fs /dev/sda1 |grep -i "Inode size" 查看inode信息
21.df -i 查看inode总量和使用量 df -h 查看磁盘使用量
22.硬链接与软链接:ln -s 源文件 新文件名 创建了软链接 不带-s默认创建硬链接
1.硬链接是通过索引节点(Inode)来进行链接 多个文件名指向一个inode这就是硬链接--->目录不支持硬链接
2.软链接是指向另一个的文件名,相当于windowns系统的快捷方式
23.awk,sed,grep
1.正则表达式:^匹配以什么开头,$匹配结尾,.匹配任何一个字符(一个)
2.*重复0个或多个前面的一个字符 .*匹配所有字符 []匹配里面的字符 +匹配一个或多个 ?0个或一个
24.crond 定时任务格式 *(分) *(时)*(日) *(月) *(星期) cmd
1.注意:周和日尽量不要同时使用
2.crontab -e 添加编辑定时任务
25.hostname查看主机名
26修改主机名
1.hostname 名称
2.vim /etc/sysconfig/network
3.vim /etc/hosts
27./etc/sysconfig/network-scripts/ifcfg-*
28.重启网卡/etc/init.d/network restart
29.查看网关 route -n
30.route add(del) default gw ip增删网关
31.nslookup查看dns解析 dig域名也可以 traceroute 域名 路由跟踪
32.free -m查看内存
33. fdisk -l 查看磁盘情况 磁盘大小=磁道数*磁头数*512字节*扇区数
34.分区:
1.fdisk /dev/sdb
2.添加完毕后partprobe 通知系统磁盘发生了改变
3.磁盘格式化 mkfs.ext4 /dev/sdb1
4.mount /dev/sdb1 /mnt/ 挂载使用 umount /mnt/删除挂载
35.du -sh /etc/(*) 查看文件或目录的大小
36.dumpe2fs /dev/sdb1 查看文件系统信息
37.nfs搭建:
1.默认已经安装完毕
2.服务端:启动rpc /etc/init.d/rpcbind start 查看 ps -ef |grep rpc 服务rpcinfo -p localhost
3.服务端:启动nfs /etc/init.d/nfs start chkconfig --list nfs
3.服务端: 编辑配置文件 vim /etc/exports /data 192.168.138.0/24(rw,sync) 重启nfs /etc/init.d/nfs reload 查看showmount -e localhost
4.客户端: 检查 showmount -e 192.168.138.137
5.挂载 mount -t nfs 192.168.138.137:/data /mnt/
38.卸载rpm --nodes(不考虑依赖,如果有依赖卸载时) -e 源
39.apache安装:
1.下载httpd
2.安装查询
0.--prefix=PREFIX install architecture-independent files in PREFIX
1.--enable-deflate Deflate transfer encoding support 压缩
2.--enable-expires Expires header control
3. --enable-headers HTTP header control
4.--enable-modules
5. --enable-so DSO capability
6.--with-mpm=MPM MPM={beos|event|worker|prefork|mpmt_os2|winnt}
7. --enable-rewrite rule based URL manipulation
8../configure --prefix=/usr/local/apache2.2.31 --enable-deflate --enable-expires --enable-headers --enable-modules --enable-so --with-mpm=worker --enable-rewrite
3.提示安装失败使,缺少那个安装那个 源 源-devel
4.echo $?检查是否成功
5.make 然后make install
40,apache优化
1.去掉没有首页展示目录结构 Options -Indexes FollowSymLinks
41.配置多个站点
1.vim httpd-vhosts.conf
2.打开Include conf/extra/httpd-vhosts.conf Include conf/extra/httpd-mpm.conf
3.添加<Directory "/var/www/html/">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
4.重启apache
42.mysql---->推荐用二进制文件安装 后面的步骤与源码安装相同
1.安装创建mysql组
2.创建mysql用户 useradd mysql -g mysql -M -s /sbin/nologin
3.见Linux中MySQLl单实例源码编译安装.txt文件
43.php
1.安装php依赖包
yum install zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel\ libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel curl-devel -y
安装libiconv ./configure --prefix=/usr/local/libiconv make make install
2.安装php
./configure --prefix=/usr/local/php-5.5.38 \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-xmlrpc \
--with-openssl \
--with-zlib \
--with-freetype-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-iconv-dir=/usr/local/libiconv \
--enable-sockets \
--enable-mbstring \
--enable-soap \
--enable-static \
--enable-gd-native-ttf \
--with-curl \
--with-xsl \
--enable-ftp \
--with-libxml-dir
编译失败 安装 yum install openssl-devel yum install libxslt-devel
3.make && make install 成功 cp php.ini-development /usr/local/php/lib/php.ini
4.apache httpd.conf 增加2行 第311行
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
5.该首页地址为index.php
44.nginx
1.安装pcre yum install pcre pcre-devle 支持rewrite 伪静态
2.yum install openssl openssl-devel
3.0. 首先创建用户,组 useradd nginx -s /sbin/nologin -M
3../configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.10.2 --with- \http_stub_status_module --with-http_ssl_module
4.make && make install
45.mysql非源码安装:
46.nginx php安装
1.依赖包同apache安装php同 yum install libxslt* -y
2.失败
error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
1.先确认/usr/local/mysql/lib/下是否有libmysqlclient.so.18这个文件.
ll /usr/local/mysql/lib/|grep libmysqlclient.so.18
2.修改ld.so.conf文件
echo "/usr/local/mysql/lib" >>/etc/ld.so.conf
3.然后执行ldconfig使其生效.
3.改配置文件:cp etc/php-fpm.conf.default etc/php-fpm.conf
47.cms discuzz wordpress
48.php优化
1.安装yum install perl-devel -y
2.安装扩张方法usr/local/fastphp/bin/phpize ./configure --enable-eaccelerator=shared \
--with-php-config=/usr/local/fastphp/bin/php-config
3.安装mysqli扩张
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
/home/centos3/Public/apps/php-5.5.38/ext/mysqli/mysqli_api.c:36:47: error: ext/mysqlnd/mysql_float_to_double.h: No such file or directory
make: *** [mysqli_api.lo] Error 1
注意:可能相对路径有问题,mysqli_api.c中mysql_float_to_double.h路径在mysqlnd中
3.在php.ini中修改extension_dir = "/usr/local/fastphp/lib/php/extensions/no-debug-non-zts-20121212/"
extension=mysqli.so
4.php.ini 在php的lib可以找到
5.一般php忘记安装的在安装的源码中ext可以重新添加,先要usr/local/fastphp/bin/phpize 再configure make...
49.php缓存加速器xcache
1.与eaccelerator二选一
2.安装:先执行/usr/local/fastphp/bin/phpize,./configure --enable-xcache --with-php-config=/usr/local/fastphp/bin/php-config
3.php.ini添加 extension=xcache.so
50.安装PDO_MYSQL
1。先执行/usr/local/fastphp/bin/phpize
2../configure --with-php-config=/usr/local/fastphp/bin/php-config --with-pdo-mysql=/usr/local/mysql
3.报错:/home/centos3/Public/apps/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:53: error: expected specifier-qualifier-list before ‘MYSQL_RES’
make: *** [pdo_mysql.lo] Error 1
解决:是因为在编译时需要mysql的头的文件,而它按默认搜索找不到头文件的位置,所以才出现这个问题.所以要将 /usr/local/mysql/include/ 目录下的mysql头文件链接到 /usr/local/include/ 的目录下:
ln -s /usr/local/mysql/include/* /usr/local/include/
然后再make和make install,pdo_mysql模块加进去了.
51.优化:
1.隐藏版本号:server_tokens off;
2.压缩:
gzip on;
gzip_min_length 1000;
gzip_buffers 4k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/html text/css text/xml application/javascript text/plain application/json;
gzip_vary on;
52.apache忘记安装模块解决办法----->以DSO动态模块加载
1.切换到apache源码路径:/home/centos3/Public/apps/httpd-2.2.31/modules/filters
2.(这是安装的路径)/usr/local/apache/bin/apxs -c -i -a mod_deflate.c
3.检查apache安装目录是否生成.so文件 ll /usr/local/apache/modules/
53.expires本地缓存
54.js,scc等不记录日志配置
location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)${
access_log off;
}css失效什么原因?
55.安全
1.所有站点目录的用户和组都应该为root
2.所有目录权限为755
3.所有文件权限为644
4.网站服务的用户不能用root
5.修改成expose_php = off不显示php版本
56.iptables
1.iptables -L -n
2.iptables -F清空规则 iptables -X删除自定义的规则 iptables -Z链的记数器清零
3.iptables -t filter -A INPUT -p tcp --dport 80 -j DROP
4.-A与-I区别:-A在末尾添加规则,-I在开头添加
5.iptables -t filter -A INPUT -i eth0 ! -s 192.168.0.2 -j DROP 封某个ip
6.iptables -t filter -A INPUT -p tcp --dport 80:100 -j DROP 80-100之间的端口被封
57.svn
1.yum install subversion -y
2. 启动svnserve -d -r svndata/ svnadmin create 路径/工程
3.工程下svnserve.conf 打开 12行改成anon-access = none auth-access = write password-db =/home/centos3/Public/svnpasswd authz-db = /home/centos3/Public/svnpasswd/authz
4.cp authz passwd /home/centos3/Public/svnpasswd/
5.重启svnserve
58.shell
1.注意:[] 两边要写空格否则会出错
2..bash_profile .bashrc 全局变量那个用户家名录设置那个有效 /etc/profile 下所有用户有效
3./etc/profile.d/ 放置进入bash执行的文件
4.unset name 环境变量的取消
5.$0获取当前shell脚本的文件名,包括脚本路径
6.dirname $0 路径名 basename $0 文件名
7.${n}获取脚本的参数
8.$#获取当前脚本参数的个数
9.$?获取上一次脚本执行是否成功
10.脚本退出一般用exit 1
11.$*获取脚本传入的所有参数,将所传入的所有参数看成一个字符串,类似"$1$2.."
12."$@"获取脚本传入的参数,但是是分别列出,类似"$1" "$2"... "$*" 所有参数一个字符串输出,$@,$*相同分别列出,类似"$1" "$2"...
13.shift参数向前移位
14.数值计算:
1.((a=1+2**3-2)) 双括号里面运算 echo $(($a+1))
2.let i=i+2 没有(())效率高
3.expr
4. echo 2+2|bc
5.read -p "请输入:" a echo $a
15.条件测试
1.man test 查看用法
2.字符串比较注意点:[ "ab" = "ab" ]&&echo 1||echo 0 1.字符串""引起来,2.要有空格
3.[ ] [[ ]]区别 []里面用-a -o -gt -ge ... 而[[]] 可以对应用 && || > >=
16.shell函数
1.echo -e "\033[{3-4}{0-7}m 111 \033[0m" 显示字体不同颜色
17.数组定义a=(1 2 3 4) echo ${#a[*]} echo ${arr[@或*]} 获取所有元素 获取数组长度 打印 echo ${a[0]}
2.定义关联数组 declare -A arr2 arr2=(['a']=11 ['b']=22 ['c']=33) echo ${arr2['a']}
echo ${!arr2[*]}列出所有索引 echo ${arr2[*]}列出所有值
18.tty 显示当前用户终端的名字. 注意每一个单独的xterm窗口都被算作一个不同的终端.
19.lsof 列出打开的文件. 这个命令将会把所有当前打开的文件列出一份详细的表格, 包括文件的所有者信息, 尺寸, 与它们相关的信息等等
20.: > data.xxx 作用相同于:cat /dev/null >data.xxx
21.command &>filename 会重定向命令command标准输出(stdout)和标准错误(stderr)到文件filename中
22.一个后面跟一个&的命令会在后台运行.
59.sftp centos3@192.168.138.138
60.sed 行编辑器
61.grep
62.awk 报告生成器
63.内存释放:echo 1 > /proc/sys/vm/drop_caches
64.To free dentries and inodes:echo 2 > /proc/sys/vm/drop_caches
65.To free pagecache, dentries and inodes:echo 3 > /proc/sys/vm/drop_caches
66.mysqladmin -uroot -p123456php password 123456为管理员用户修改密码
67.mysql忘记密码解决
1.mysqld_safe --skip-grant-tables --user=mysql &
2.mysql可以直接登陆然后再修改密码
68.删除用户:drop user 'user'@'localhost'
69.备份:mysqldump -uroot -p123456 -B aitvshow|gzip>a.sql.gz
解压gzip压缩文件gunzip -c a.sql.gz >aa.sql