一、linux目录管理和文件管理 1.创建目录 mkdir -p /home/test1 mkdir -p /root/test2 2.切换目录 cd /home/test1 cd /root/test2 3.查看路径 pwd 4.创建文件 touch /home/test1/file1 touch /root/test2/file2 5.显示文件列表 ls ls -a 6.复制文件和目录 cp /home/test1/file1 /root/test2 7.删除文件 rm /home/test1/file1 8.删除目录 rmdir /home/test1 (-r 删除非空目录) 9.移动和重命名 mv file1 file2 10.查找文件 find /home/test1 -name file1 find /home/test1 -name fil* find /home/test1 -mtime 3 11.使用vi编辑器创建文件、编辑和查看 vi test.txt cat test.txt more/less test.txt head/tail -3 test.txt more test.txt | grep 9 (关键字查找) head -5 test.txt >> /dev/tty3 (输出重定向) :n1,n2s /word1/word2/g 在第n1与n2行之间寻找word1,并将它替换为word2 :1,$s/word1/word2/g 从第 一行开始到最后一行查找word1并替换为word2 12.查看系统信息 uname -r / uname -a cal 2015 date 13.磁盘分区/格式化/检验/挂载 分区 df / fdisk -l 找出磁盘名 fdisk /dev/sda n +2048M w 格式化 mkfs -t ext3 /dev/sda3 检验 fsck -C -f -t ext3 /dev/sda2 挂载 mkdir /mnt/usb mount /dev/sdb1 /mnt/usb umount /dev/sdb1 大于2T硬盘挂载 parted /dev/sdb (假设sdb 是新增大于2T硬盘) print (查看一下) (parted) mklabel gpt (parted) unit TB (parted) mkpart primary 0 3 print (查看一下) quit mkfs.ext4 /dev/sdb1(格式化硬盘分区1) mount /dev/sdb1 /data (挂载,之后即可使用了) 自动挂载 blkid /dev/sdb 找出UUID vi /etc/fstab UUID=8e4619b8-2778-467d-88e3-4fcdc5f0239a /boot ext4 defaults 0 0 14.修改权限和所有权 chown root file1 chmod 755 file1 15.增加用户组/添加用户 groupadd project useradd -G project user1 16.目录权限和属性修改 chgrp project /目录 chmod 770 /目录 17.加入SGID 权限 chomod 2770 /目录 18.查看是否安装 rpm -q 包名称 rpm -qa |grep ftp rpm -ivh 软件包名称 rpm -e 软件名称 (卸载软件) 19.查看/更改服务状态 chkconfig --list | grep vsftpd chkconfig --level 235 vsftpd on 20.延迟性调度命令at eg: 一分钟后在tty1中,提示“hello!!” at now +1 minutes at> echo "hello !!" >/dev/tty1 at> ctrl+D eg: 系统两天后的17:30执行文件data制定作业 。 at-f data 17:30+2 days 21.周期性调度命令crontab crontab minute hour day mouth dayofweek command 30 8 * * 4 echo“meeting at 10:00 AM”> /dev/tty1 ctrl +D 修改周期性任务 crontab -e 22.查看/终止进程 ps aux |less ps aux |grep cy (查看用户cy所有进程信息) 终止进程 ps -A |grep sshd kill 2749 23.tar包管理 创建包 tar -cvf test.tar test 创建压缩包 tar -zcvf test.tar.gz test tar -jcvf test.tar.bz2 test 查看包文件列表 tar -tvf test.tar tar -ztvf test.tar.bz2 释放包/释放压缩包到指定目录 tar -xvf test.tar -C /tmp tar -zxvf test.tar.bz2 -C /tmp tar包追加文件 tar -rvf test.tar exam.c 更新包中文件 tar -uvf test.tar exam.c gzip -v man.config 压缩 gzip -d man.config.gz 解压 zcat man.config.gz 查看/读取 bzip2 -v man.config 压缩 bzip2 -d man.config.bz2 解压 bzcat man.config.bz2 查看/读取 24.网络环境配置 主机名配置 vi /etc/sysconfig/network 网卡配置 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.0.103 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.1.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no HWADDR=0:0C:29:C7:58:6D ONBOOT=yes DNS配置 vi /etc/resolv.conf nameserver 61.139.2.69 25.Linux挂载Winodws共享文件夹 假定win机 d:/folder/share 的共享名为 share , 有用户administrator ,密码123 在linux机上,把share挂到/mnt目录: mount -t cifs -o username=administrator,password=123 //192.168.0.11/share /mnt 其中-t表示要挂载的类型,cifs是微软提供远程访问的一个协议。 26.netstat 详解 netstat -a 列出所有当前的连接 只列出 TCP 或 UDP 协议的连接 netstat -at / netstat -au IP禁用域名解析功能 netstat -ant 只列出监听中的连接 netstat -tnl 获取进程名、进程号以及用户 ID(需要root权限) netstat -nlpt / netstat -ltpe 显示内核路由 netstat -rn 查看http的并发请求数及其TCP连接状态 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 返回结果示例: LAST_ACK 5 SYN_RECV 30 ESTABLISHED 1597 FIN_WAIT1 51 FIN_WAIT2 504 TIME_WAIT 1057 其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。 查看linux环境中的routing cache netstat -rn --cache 27.mySQL 常用命令 mysql -uroot -p #登陆数据库 mysql> SHOW DATABASES;#查看数据库 mysql> CREATE DATABASE MYSQLDATA; #创建一个数据库MYSQLDATA mysql> USE MYSQLDATA; #按回车键出现Database changed 时说明操作成功 mysql> SHOW TABLES;#查看现在的数据库中存在什么表 mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));#创建一个数据库表 mysql> DESCRIBE MYTABLE;#显示表的结构 mysql> insert into MYTABLE values (”cy”,”M”);#向表中添加数据 mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;#用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql>use database; mysql>source d:/mysql.sql; #导入.sql文件命令(例如D:/mysql.sql) mysql>drop TABLE MYTABLE;#删除表 mysql>delete from MYTABLE;#清空表 mysql>update MYTABLE set sex=”f” where name=’hyq’;#更新表中某一项数据 28.文件系统完整备份/恢复:dump/restore 备份: dump -S /dev/sdb 测试备份文件系统需要的容量 完整备份文件系统 dump -0u -f /root/boot.dump /boot 仅备份差异文件部分 dump -1u -f /root/boot.dump.1 /boot 非单一文件系统,即单一目录dump备份 dump -0j -f /root/etc.dump.bz2 恢复: restore -t -f /root/boot.dump 查看备份数据内容 新建一个文件系统再还原 fdisk /dev/sdc n +105M p w partprobe mkfs -t ext3 /dev/sdc mount /dev/sdc /mnt cd /mnt restore -r -f /root/boot.dump 29.lsof 命令详解 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 进程名称 进程标识符 进程所有者 文件描述符 文件类型 指定磁盘的名称 索引节点 确切名称 lsof [options] filename lsof abc.txt 显示开启文件abc.txt的进程 lsof -c abc 显示abc进程现在打开的文件 lsof -c -p 1234 列出进程号为1234的进程所打开的文件 lsof -g gid 显示归属gid的进程情况 lsof +d /usr/local/ 显示目录下被进程开启的文件 lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长 lsof -d 4 显示使用fd为4的进程 lsof -i 用以显示符合条件的进程情况 lsof|grep del 恢复删除的文件 当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。 当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容。 假如由于误操作将/var/log/messages文件删除掉了,那么这时要将/var/log/messages文件恢复的方法如下: 首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下: # lsof |grep /var/log/messages syslogd 1283 root 2w REG 3,3 5381017 1773647 /var/log/messages (deleted) 从上面的信息可以看到 PID 1283(syslogd)打开文件的文件描述符为 2。同时还可以看到/var/log/messages已经标记被删除了。因此我们可以在 /proc/1283/fd/2 (fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下: # head -n 10 /proc/1283/fd/2 Aug 4 13:50:15 holmes86 syslogd 1.4.1: restart. Aug 4 13:50:15 holmes86 kernel: klogd 1.4.1, log source = /proc/kmsg started. Aug 4 13:50:15 holmes86 kernel: Linux version 2.6.22.1-8 ([email protected]) (gcc version 4.2.0) #1 SMP Wed Jul 18 11:18:32 EDT 2007 Aug 4 13:50:15 holmes86 kernel: BIOS-provided physical RAM map: Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 0000000000000000 - 000000000009f000 (usable) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 0000000000100000 - 000000001f7d3800 (usable) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 000000001f7d3800 - 0000000020000000 (reserved) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 00000000e0000000 - 00000000f0007000 (reserved) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 00000000f0008000 - 00000000f000c000 (reserved) 从上面的信息可以看出,查看 /proc/8663/fd/15 就可以得到所要恢复的数据。 如果可以通过文件描述符查看相应的数据,那么就可以使用 I/O 重定向将其复制到文件中,如: cat /proc/1283/fd/2 > /var/log/messages 对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。 lsof实用命令 lsof `which httpd` //那个进程在使用apache的可执行文件 lsof /etc/passwd //那个进程在占用/etc/passwd lsof /dev/hda6 //那个进程在占用hda6 lsof /dev/cdrom //那个进程在占用光驱 lsof -c sendmail //查看sendmail进程的文件使用情况 lsof -c courier -u ^zahn //显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn lsof -p 30297 //显示那些文件被pid为30297的进程打开 lsof -D /tmp 显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列 lsof -u1000 //查看uid是100的用户的进程的文件使用情况 lsof -utony //查看用户tony的进程的文件使用情况 lsof -u^tony //查看不是用户tony的进程的文件使用情况(^是取反的意思) lsof -i //显示所有打开的端口 lsof -i:80 //显示所有打开80端口的进程 lsof -i -U //显示所有打开的端口和UNIX domain文件 lsof -i UDP@[url]www.akadia.com:123 //显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接 lsof -i [email protected]:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新) lsof -i [email protected]:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数 30.linux单用户模式修改密码 进入单用户模式: 1. grub 进入启动画面之后,敲入“e” 把光标移动到kernel ...那一行,再敲入“e” 在kernel 一行的结尾加上空格single,回车 敲入“b” 启动系统,即进入单用户模式, 这个时刻就能够用passwd命令改密码了。 passwd root 改完以后reboot重启。 2. lilo 进入lilo命令行模式,敲入linux single,即进入单用户模式。 passwd ... 假如grub/lilo设了密码,必须要记得才行。 31.nginx yum 安装 添加源 rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm yum install nginx -y 32.磁盘IO查看 iostat -k -d 3 33.查看cpu信息 查看物理CPU的个数 cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l 查看逻辑CPU的个数 cat /proc/cpuinfo |grep "processor"|wc �Cl cat /proc/cpuinfo |grep "processor"|wc �Cl 查看CPU核数 cat /proc/cpuinfo |grep "cores"|uniq 查看CPU型号信息 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 34.查看僵尸进程 top 查看是否存在僵尸进程 ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' kill -HUP 12339 杀死僵尸进程 35.cacti调试 php调试env LANG=C /usr/local/php56/bin/php /var/www/cacti/poller.php --debug 36.salt 一键添加用户、修改主机密码、清理操作日志 salt "*" cmd.run 'useradd shuzhilian' salt "*" cmd.run 'echo "shuzhilian:12345678" |chpasswd' salt "*" cmd.run 'echo "root:UnionBigData_#@!11" |chpasswd' > /root/.bash_history (登出之后再登陆清理) 37.rsyslog 配置 Linux客 户端配置: 1.检查或升级rsyslog软件 # yum -y install rsyslog # vi /etc/rsyslog.conf *.* @192.168.99.1 行尾新增上面这行内容,即客户端将本地日志发送到服务器。 3.重启rsyslog 服务 # /etc/init.d/rsyslog restart 4.编辑/etc/bashrc,将客户端执行的所有命令写入系统日志/var/log/messages中。 # vi /etc/bashrc 在文件尾部增加一行 export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y;});logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }' 设置其生效 # source /etc/bashrc 38.mysql 导出数据 nohup mysqldump -uroot -p'root123!@#' electrical taobao_goods_new >taobao_goods_new1103.sql & nohup mysqldump -uroot -p'root123!@#' electrical jd_product > jd_product1103.sql & nohup mysqldump -uroot -p'root123!@#' electrical tmall_product>tmall_product1103.sql & 39./var/log/回滚 cat /var/log/secure |grep '182.151.120.150' cat /var/log/secure |grep '182.151.120.150' |wc -l logrotate -f /etc/logrotate.conf
本文出自 “小陌成长之路” 博客,谢绝转载!