Linux学习笔记 by 小陌_11.10

一、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


本文出自 “小陌成长之路” 博客,谢绝转载!

你可能感兴趣的:(Linux学习笔记,Linux基础命令积累)