Linux常用命令

Posted on 2012-04-18 12:10  tongchuhuozhai  阅读(492)  评论(0编辑  收藏  举报

grep 要搜索的字符串 * -nr : 在当前目录所有文件内容中,搜索字符串

 

find -name "init.rc"
而find "init.rc"则找不到

 

  • 查看系统信息

uname -r 看你当前版本 如 : linux-2.6.32-source. 


一个cpu可以双核的,或者四核的, 并不是双核的有两个cpu. 一个系统里,只有一个cpu, 看cpu几核的,cat /proc/cpuinfo, cores的值,或看有几个processor

 

w 查看所有登录用户, -bash 表示在空闲

du --max-depth=1 -h 看文件夹大小

df -h 看文件系统大小

 

samb 端口为445 从 netstat -an | grep "

 

lsof 显示所有文件信息
lsof -i :22 知道22端口现在运行什么程序

lsof -c abc 显示abc进程现在打开的文件

lsof -g gid 显示归属gid的进程情况

lsof 访问核心内存及各种文件 可看到大量的信息。需root用户, 非root用户, 什么也看不到, 不给任何 提示。

 

$nautilus . 打开当前文件夹

  • 拷贝

1. scp 

例:scp gitserver@192.168.1.43:/homg/gitserver/gaotong .

 

2. sync (remote sync 缩写)

例:

本地拷到远程:
rsync -v -u -a --delete --exclude .git --exclude .repo --rsh=ssh --stats giserver@192.168.1.43:/home/gitserver/gaotong .

远程拷到本地:
rsync -v -u -a --delete --rsh=ssh --stats  username@192.168.0.1:/home/username/remotefile.txt .

-v, –verbose 详细模式输出
-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-u, –update 仅更新,即跳过所有已经存在于DST,而文件时间晚于要备份的文件。(不覆盖更新的文件)
–exclude=PATTERN 指定排除不需要传输的文件模式
-stats  给出某些文件的传输状态
–delete  删除DST中SRC没有的文件

 

rsync是, 可以镜像整个目录。 用rsync拷到远程时,不会影响电脑速度。好用。

 

rsync,remote synchronize的简写,就是远程同步的意
思。就是可以用这个命令对两台机器上的目录和文件进行
同步,一般作单向同步,主机到从机的同步。即主机内容
改变,从机也跟着改变。(双向同步也可以,但是会存在
修改冲突问题)

rsync有六种不同的工作模式:
  1. 拷贝本地文件;当SRC和DES路径信息都不包含有
单个冒号":"分隔符时就启动这种工作模式。
  2.使用一个远程shell程序(如rsh、ssh)来实现将
本地机器的内容拷贝到远程机器。当DST
路径地址包含单个冒号":"分隔符时启动该
模式。
  3.使用一个远程shell程序(如rsh、ssh)来实现将
远程机器的内容拷贝到本地机器。当SRC
地址路径包含单个冒号":"分隔符时启动该
模式。
  4. 从远程rsync服务器中拷贝文件到本地机。当SRC
路径信息包含"::"分隔符时启动该模式。
  5. 从本地机器拷贝文件到远程rsync服务器中。当
DST路径信息包含"::"分隔符时启动该模式。
  6. 列远程机的文件列表。这类似于rsync传输,不过
只要在命令中省略掉本地机信息即可。

1,2,3,6三种模式只需要本机装有rsync客户端即可,其中
网络传输协议可以用ssh等其他协议。4,5模式就是C/S模
式,需要远程机器上启动
rsync服务。客户端与服务器端用rsync自己的网络协议进
行数据传输。

因为配置简单,主要用的两种方式是2和3,也可以用1来进
行本地备份。

举两个我机器上用的例子:
1, rsync -avzc -e /usr/local/bin/ssh2
/data/backup/zs/backup/zs
root@172.16.196.65#36000:/data/backup/zs/backup/
其中 -e /usr/local/bin/ssh2 表示rsync用
ssh2协议进行数据传输,因此需要输入相应密码,此例用户
名为 root

2, rsync -avz --progress -e "ssh -p 34002"
/home/bluesky/projects/DataSpider/data/original_da
ta root@localhost:/data/projects/DataSpider/data
其中 -e "ssh -p 34002" 表示ssh走的是自己配
置的34002端口。
我通过34002端口经过一个跳转机连到和本机不
在同一个网内(不能互相访问)的另一台机器上。这个建
立tunnel进行跳转的功能下次讲

大量文件在机器之间拷bei, 全用rsync, 不用scp, 也不
用tar打包再拷。后两者速度远不如rsync快。
history 10
初始版本不要在虚拟机上编,虚拟机上编译有不可知的错
误。很多时间浪费在了虚拟机上

 rsync -a -u -v xx gitserver@192.168.1.43:~/
远程用户名 远程地址 远程目录
rsync 比scp要快
用rsync和scp传输大量文件,发现rsync至少比scp快20倍 
以上

3. find -exec cp 用法

将a2中除.git文件拷到a2中,但不保持目录结构

find ./a1 -type f -name ".git" --exec cp {} ./a2 \;

 4.cp

 cp -p 创建多级目录。

  • 搜索

find -name "*.xml" | xargs grep  keystring  在查找的文件中,搜索指定的字符串

xargs是exec的一种改进

使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

 

  • 打包

tar –jvxf 文件名 : 解压tar.bz2文件用

tar zcvf m.tar.gz hello.cpp :压缩文件

 

tar zxvf a.tar.gz -C /home/ligang/vajra: 指定解压到哪个目录下,这里把a.tar.gz解压到/home/ligang/vajra

  • 快捷键

快捷键统一: history man 与vi 快捷键相同

hitory 10 最近10个

 

  • 防火墙

ufw enable
ufw default deny

ufw allow from 192.168.1.32
ufw allow 22 (ssh 端口)

ufw status

ufw 能使指定ip的samba用户才能

 

  • 添加用户 

切换到root用户下用adduser 可以添加home目录, useradd 不能添加home目录

 

  • 建立分区, 挂载分区, 查看分区挂载点

虚拟机先建立一块硬盘,然后在linux 命令行用root用户用fdisk在硬盘上建立一个分区, 一般将整个硬盘建立一个分区。
分区知识:
硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和
一块物理硬盘只能有: 一到四个主分区(但其中只能有一个是活动的主分区),或一
到三个主分区,和一个扩展分区。分别对应sda1,sda2,sda3,sda4.
常见的是扩展分区被分成几个逻辑分区,用5,6,7,8等号码标识。

切换到root用户 

1. 建立分区

查看硬盘fdisk -l
fdisk /dev/sdb 进入fdisk 模式

n 增加分区
p 主分区
2 第二个主分区
w 分区写到硬盘
到此将分区建好

 

3. 格式化分区:
mkfs.ext3 /dev/sdb

 

4. 挂载分区:
vi /etc/fstab
/dev/sdb /home/ligang ext3 defaults 0 0

使/etc/fstab生效:
mount -a 可使/etc/fstab 生效

 

5.查看分区是否挂载上:
df /home/ligang/ 可查看该目录大小

关于df du 区别:
df(disk filesystem)
df 命令:面向文件系统, 参数为文件系统的挂载点:

df -h /home/ligang 查看指定挂载点的总空间, 已用空间

df -h 查看所有文件系统总空间,已用空间
du 命令: 面向文件,如du -h --max-depth=1

 

  • samba服务器

1.添加samba用户

$ru root

#adduser ligang

#smbpasswd -a ligang

输入用户登录密码:

 

2. 改samba配置

#vi /etc/samba/smb.conf

[share1]

path=/tmp/tmp

public=yes

browseable=yes

writable=yes

valid users=ligang

force user = nobody

force group = group

create mask=0700

directory mask=0700

 

重启samba

# /etc/init.d/smbd restart

 

windows系统访问:

\\192.168.202.103\share1 

不能把samba共享目录建在/tmp, 重启消失

 

linux的ufw激活时, 其samba服务器, 不能被windows访问, 可加ufs allow windows的IP

 

 

  • 远程登录


虚拟机一关闭,ssh报broken pipe错误

 

  •   查看文件内容 

vimdiff 可视化强

 

  •  定时操作

root 用户 at 定时关机
1) at 23:30
shutdown -h now

2) crontab 

语法: 00 * * * *<tab>脚本文件全路径名:

 

06 * * * *    /home/gitserver/tmp.sh

脚本必须有对环境变量的设置,如tmp.sh

#! /bin/bash
#################################
. /etc/profile
. ~/.bashrc
#################################
echo "ok" > crontab_test

  解决crontab -e所打开的文件若不能执行shell脚本:

  在vi编辑器下,用:set fileformat查看文件格式,发现文件格式为dos, 用:set fileformat=unix将文件格式设置为unix, 就可执行脚本了

 例:

每小时的第31分钟关机:

$su root

#crontab -e 

输入如下:

31 * * * *      /sbin/shutdown -P 1

 

 目录有可执行权限, 才能进入。

 上网:

若不能上网,改一下网关

 

 

可以将windows映射为目录,在linux可以将文件拷到这个目录下,从而实现自动从linux拷到windows

crontab 可以git 下载代码,git 提交代码。
用export PATH=make所需要的命令的路径
之后,就可用make 编译代码了
可以用make | tee 文件名,将make产生的编译信息输入到指定的文件中,这在crontab定时make任务时有用。分析make失败的原因

 

crontab 运行环境与用户环境不同
所以crontab 中的env与 用户的env不同

 

 

 

 

系统

  # uname -a # 查看内核/操作系统/CPU信息
  # head -n 1 /etc/issue # 查看操作系统版本
  # cat /proc/cpuinfo # 查看CPU信息
  # hostname # 查看计算机名
  # lspci -tv # 列出所有PCI设备
  # lsusb -tv # 列出所有USB设备
  # lsmod # 列出加载的内核模块
  # env # 查看环境变量

资源

  # free -m # 查看内存使用量和交换区使用量
  # df -h # 查看各分区使用情况
  # du -sh <目录名> # 查看指定目录的大小
  # grep MemTotal /proc/meminfo # 查看内存总量
  # grep MemFree /proc/meminfo # 查看空闲内存量
  # uptime # 查看系统运行时间、用户数、负载
  # cat /proc/loadavg # 查看系统负载

磁盘和分区

  # mount | column -t # 查看挂接的分区状态
  # fdisk -l # 查看所有分区
  # swapon -s # 查看所有交换分区
  # hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
  # dmesg | grep IDE # 查看启动时IDE设备检测状况

网络

  # ifconfig # 查看所有网络接口的属性
  # iptables -L # 查看防火墙设置
  # route -n # 查看路由表
  # netstat -lntp # 查看所有监听端口
  # netstat -antp # 查看所有已经建立的连接
  # netstat -s # 查看网络统计信息

进程

  # ps -ef # 查看所有进程
  # top # 实时显示进程状态

用户

  # w # 查看活动用户
  # id <用户名> # 查看指定用户信息
  # last # 查看用户登录日志
  # cut -d: -f1 /etc/passwd # 查看系统所有用户
  # cut -d: -f1 /etc/group # 查看系统所有组
  # crontab -l # 查看当前用户的计划任务

服务

  # chkconfig --list # 列出所有系统服务
  # chkconfig --list | grep on # 列出所有启动的系统服务

程序

  # rpm -qa # 查看所有安装的软件包

其他常用命令整理如下:

  查看主板的序列号:dmidecode | grep -i 'serial number'

  用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)

  查看CPU信息:cat /proc/cpuinfo [dmesg | grep -i 'cpu'][dmidecode -t processor]

  查看内存信息:cat /proc/meminfo [free -m][vmstat]

  查看板卡信息:cat /proc/pci

  查看显卡/声卡信息:lspci |grep -i 'VGA'[dmesg | grep -i 'VGA']

  查看网卡信息:dmesg | grep -i 'eth'[cat /etc/sysconfig/hwconf | grep -i eth][lspci | grep -i 'eth']

  查看PCI信息:lspci (相比cat /proc/pci更直观)

  查看USB设备:cat /proc/bus/usb/devices

  查看键盘和鼠标:cat /proc/bus/input/devices

  查看系统硬盘信息和使用情况:fdisk & disk – l & df

  查看各设备的中断请求(IRQ):cat /proc/interrupts

  查看系统体系结构:uname -a

  查看及启动系统的32位或64位内核模式:isalist –v [isainfo –v][isainfo –b]

  查看硬件信息,包括bios、cpu、内存等信息:dmidecode

  测定当前的显示器刷新频率:/usr/sbin/ffbconfig –rev \?

  查看系统配置:/usr/platform/sun4u/sbin/prtdiag –v

  查看当前系统中已经应用的补丁:showrev –p

  显示当前的运行级别:who –rH

  查看当前的bind版本信息:nslookup –class=chaos –q=txt version.bind

  查看硬件信息:dmesg | more

  显示外设信息, 如usb,网卡等信息:lspci

  查看已加载的驱动:

  lsnod
  lshw

  查看当前处理器的类型和速度(主频):psrinfo -v

  打印当前的OBP版本号:prtconf -v

  查看硬盘物理信息(vendor, RPM, Capacity):iostat –E

  查看磁盘的几何参数和分区信息:prtvtoc /dev/rdsk/c0t0d0s 

  显示已经使用和未使用的i-node数目:

  df –F ufs –o i 
  isalist –v

对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:

  主机CPU信息:Cpuinfo 
  主机DMA通道信息:Dma 
  文件系统信息:Filesystems 
  主机中断信息:Interrupts 
  主机I/O端口号信息:Ioprots 
  主机内存信息:Meninfo 
  Linux内存版本信息:Version

  备注: proc – process information pseudo-filesystem 进程信息伪装文件系统

 

 

打patch:
patch -p1 < patch路径文件, 如:

patch -p1 < ~/patch/0003-radio-tavarua-Configure-channel-spacing-for-enhanced.patch

 

tree 命令可看到目录树,默认没有安装这个命令。 在看私有目录时,比较方便。

 

------------------

有些屏幕太大, 而分辨率却很低, 体验不好.
man 1 表示查命令
man 2 查系统调用
man 3 查库函数, 如man 3 fopen. c 语言库函数
用词, 满屏