linux 系统笔记
shell 学习:http://www.jb51.net/article/25729.htm
一、常用命令
1.Linux 系统shell分类:Bourne shell(sh),C shell(csh),Korn shell(ksh)
注释:sh是unix最初使用的shell,在编程方面非常出色,但在处理用户之间交换做的不如其他shell,linux系统缺省使用的shell是
Bourne Again shell(bash),对普通用户用用$做提示符,对超级用户root用#作提示符csh是一种更适合于编程的shell,他的
语法和C语言相似,ksh结合了sh和csh的优点
2.ls 该命令用来列出当前目录下的所有文件和子目录,相当于windows的dir命令,常用的参数有三个:-a,-l,-f
-a 显示所有文件,包括隐藏文件
-l 查看更详尽的文件资料
-f 在列出的文件(目录)后加个符号,例如:可执行文件加*,目录则加‘/’
3.cp 该命令式用来复制文件,相当于dos下的copy命令,
使用格式: cp -r源文件(source) 目的文件(target)
文件复制并可以覆盖原来的文件
1) 将new目录下的所有文件拷贝到test下,并覆盖test下的文件(这个总会提示是否要覆盖文件)
cp -rf new/* test
2) 功能同上,但不会提示覆盖
yes | cp -rf new/* test
4.rm 该命令用来删除文件,常用的参数有-i,-r,-f
-i 在删除文件时要先询问我们是否要删除,输入y则删除
-r 和rmdir命令相同,不过比rmdir功能更强大,-r是连同这个目录下的子目录一起删除
-f 不经确认强制删除
5.mv 可以用来移动文件和重名文件,如: mv /temp/test.txt /root mv test.txt t1.txt
6.ps 进程及任务管理,参数 -e 显示所有进程 -f 全格式 -l 长格式 -x后台进程
ps -aux|grep www.project.com
7.pwd 表示当前路径
8.whoami 表示当前用户
9.设备不能直接用cd 命令进入,应为设备不是一个目录,如cd cdrom将报错,如果要访问必须将cdrom挂载到一个目录下,例如:
mount /dev/cdrom /mnt/cdrom 表示将cdrom挂载到mnt目录下的cdrom文件夹下,然后我们就可以访问挂载的那个文件访问cdrom
里的内容了。如果不想挂载了用命令 unmont /dev/cdrom 就把/dev/cdrom 卸载了。
10.装linux操作系统至少两个分区,/ 根分区 swap 交换分区
11.linux的启动过程
a.load bios
b.read MBR's config to find out the OS(找到要启动的操作系统)
c.load the kernel of the OS(操作系统)
d.init process starts
e.execute /etc/rc.d/rc.sysinit
f.start other modules(etc/modules.conf)
g.execute the run level scripts
h.execute /etc/rc.d/rc.local
i.execute /bin/login
j.shell started
12.linux 的run level 启动级别
命令:init n
0:系统停机状态
1: 但用户工作状态
2:多用户工作状态(没有NFS(网络文件系统))
3: 多用户工作状态(有NFS)
4:系统未使用,预留的
5:图形界面
6:系统正常关闭并重启
13.logout 注销
14.显示命令参数的用法 用man 命令;或 命令 --help
15.touch 创建文件
16.more 查看文件内容,并分页
16.cat 正序查看文件内容
17.tac 逆序查看文件内容
18.head 查看文件前几条记录,可以带参数
19.tail 查看文件末尾几条记录,可以带参数
tail -f -n100 filename 显示末尾100行数据
20.find 查找文件 例如:find / -name *local 在根目录下查找文件名后缀是local的文件
find /test -name file1.txt 查找/test目录下名字为file1.txt 的文件
grep -n 【关键字】 【文件名】 # 在文件中查找 所有带有关键字的 行。
grep -ir "Exception" logs/* (查找日志目录中所有带有Exception的文件)
21.whereis 命令 表示命令从哪里来的(文件的地址)
22.echo 输出命令 例如:echo $path 表示输出path环境变量的值,变量用$表示
23.grep 查找字符 文件名 表示在文件中查找包含查找字符在文件中的行并显示
24.fdisk -l 显示磁盘的信息
25.ctrl+c 执行停止
26.| 管道 例如:ls -l | grep "^d" 表示显示当前目录下的所有文件
27.wall 内容 表示广播消息,每个登陆的用户都会受到同样的消息
28.>输出重定向 例如:ls > cmd.txt 把内容输出到cmd.txt文件中
29.<输入重定向 例如:wall < aa.txt 把文件中的内容输入到控制台中
30.reboot 重启
31.startx 进入图形界面
32.chkconfig 检查配置文件,参数--list 显示所有的配置列表,--add 增加,--del 删除,--level 启动级别,
例如:chkconfig --level 5 vsftpd on在图形界面下启动vsftpd
chkconfig vsftpd on 在所有级别上都启动vsftpd
33.wget 命令行下连接网络资源
34.kill 进程号 杀死进程。参数 -9 表示强制关闭
35.以.开头的都是隐藏文件
36.shutdown -h now 立即关机
shutdown -r now 立即重启
logout 注销
37.修改系统启动级别要修改文件/etc/inittab 文件
1)如果你现在系统默认启动进入图形用户界面,则修改这个文件就可以实现默认启动进入命令行模式
vi /etc/inittab
最后一行中# Run xdm in runlevel 5 下面
x:5:respawn 这里面的5改成3 就可以了
38.按两下tab键会自动补全
39.df 目录名 表示目录属于哪个分区
40.chsh -s shell的目录 表示更改shell 例如 :chsh -s /bin/csh 更改shell后要注销用户,不然不起作用
41.history 显示最近使用的命令
42.网络设置
第一种方法:
a.root 用户登录过后,输入setup命令
b.在进入的页面text mode setup utiliy中选择network configration 就可以设置ip,子网掩码,网关,dns
c.输入/etc/rc.d/init.d/network restart 就能生效了
第二种方法:
修改/etc/sysconfig/network-scripts/ifcfg-eth0文件,再输入/etc/rc.d/init.d/network restart 就能生效了
43.任务调度crontab -e
终止任务调度 crontab -r
列出调度任务 crontab -l
44.cal 年 查看日历
45.alias 别名名字=‘命令’ 给命令起别名
46.查看文件大小
du -sh filename
du -sh * 查询当前目录的文件大小
47.vi 分页
ctrl+u向前翻滚半屛,ctrl+d向后翻滚半屛
ctrl+b向前翻滚全屛,ctrl+f向后翻滚全屏
48.vi打开文件时光标定位
vi +n filename //打开文件时光标定位在第n行
vi + filename //打开文件时光标定位在最后一行
49.ddp vi的上下两行交换
50.修改linux启动级别
修改的/etc/inittab 文件 initdefault
二、硬盘分区
1.一个硬盘最多只能分四个分区,也就是说主分区加扩展分区最多只能有四个,因为硬盘的分区表上只能记录四条记录,扩展分区又可以分多个逻辑分区,逻辑分区没有限制个数。
2.dev 设备,所有的分区都存在这个目录下,所有的linux分区的命名格式是:/dev/xxyN
xx表示设备的类型,通常是hd(IDE硬盘)或sd(SCSI硬盘)
y表示分区所在的设备(哪一块硬盘,字母从a开始),例如:/dev/hda(第一个IDE硬盘)或
/dev/sda(第一个SCSI硬盘)
N是数字表示分区,前四个分区(主分区和扩展分区)是从数字1到4排列,逻辑分区从5开始
例如:/dev/hda3表示第一块IDE硬盘上的第三个主分区或扩展分区,/dev/sdb6表示第二块
SCIS硬盘的第二个逻辑分区
三、编辑器命令 vi
1.vi有两种模式,一种是命令模式,一种是编辑模式,模式切换用esc
2.输入a 表示添加(编辑)
3.在命令模式下输入:表示要执行什么命令,后跟w表示要存盘,q是退出,q!是不存盘退出,wq存盘退出
4.在命令模式下敲dd 删一行,dw删一个单词,o往下插入一行,O往上插入一行
5.替换字符串:在命令模式下输入s/test/test1 表示把第一个test替换为test1;
s/test/test1/g 表示把当前行所有test替换为test1;
n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good
6.显示行号:set nu
7.ctrl+v 可视区域模式
8.1,3d 删除1到3行的数据
9.3dd 删除当前行开始的三行数据
10 拷贝, 删除与粘贴
在 vi 中 y 表示拷贝, d 表示删除, p 表示粘贴 其中拷贝与删除是与光标移动命令
结合的, 看几个例子就能够明白了
yw 表示拷贝从当前光标到光标所在单词结尾的内容
dw 表示删除从当前光标到光标所在单词结尾的内容
y0 表示拷贝从当前光标到光标所在行首的内容
d0 表示删除从当前光标到光标所在行首的内容
y$ 表示拷贝从当前光标到光标所在行尾的内容
d$ 表示删除从当前光标到光标所在行尾的内容
yfa 表示拷贝从当前光标到光标后面的第一个a字符之间的内容
dfa 表示删除从当前光标到光标后面的第一个a字符之间的内容
特殊地:
yy 表示拷贝光标所在行
p 粘贴
dd 表示删除光标所在行
D 表示删除从当前光标到光标所在行尾的内容
关于拷贝, 删除和粘贴的复杂用法与寄存器有关, 可以自行查询
11 撤销操作
u撤销一次
12 快速移动光标
在 vi 中, 移动光标和编辑是两件事, 正因为区分开来, 所以可以很方便的进行光标定位和编辑 因此能更快一点移动光标是很有用的
w(e) 移动光标到下一个单词
b 移动光标到上一个单词
0 移动光标到本行最开头
^ 移动光标到本行最开头的字符处
$ 移动光标到本行结尾处
H 移动光标到屏幕的首行
M 移动光标到屏幕的中间一行
L 移动光标到屏幕的尾行
gg 移动光标到文档首行
G 移动光标到文档尾行
c-f (即 ctrl 键与 f 键一同按下) 本命令即 page down
c-b (即 ctrl 键与 b 键一同按下, 后同) 本命令即 page up
'' 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查
找到某个单词后, 再输入此命令则回到上次停留的位置
' 此命令相当好使, 它移动光标到上一次的修改行
` 此命令相当强大, 它移动光标到上一次的修改点
13 查找 vi 在命令行模式输入 “/查找的字符串” 然后回车 ,即可搜索 ,想要查找下一个 N 键
四、用户管理
1.添加用户 useradd 用户名 创建的用户放在home目录下,用户信息存在/etc/passwd文件下
2.修改用户密码 passwd 用户名 -g 组名
3.添加组 groupadd 组名 组信息存在/etc/group 文件下
4.修改用户的组 usermod -g 组名 用户名
5.删除用户 userdel 用户名 删除用户时 home目录下的用户还是存在,还要执行 rm -rf 用户名
6.切换用户su(switch user) 用户名
7.更改文件组 chgrp 组名 文件名
8 给用户添加管理员权限
vi /etc/sudoers
下面文字下面添加一个需要的用户就可以了
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
五、文件权限
1.文件权限的表示方式,共三种,r(读),w(写),x(执行),
例如:-rw-rw---r 第一个字符表示目录或文件(-为文件,d为目录),后面九位表示文件或目录的权限,前三位表示当前所有者的
权限,中间三位表示当前所有者同组用户的权限,后三位是其他组的权限。
2.修改文件或目录权限命令,有两种写法,例如: chmod +x 1.txt、chmod u+x 1.tx、chmod g+x 1.tx、chmod o+x 1.txt
或者 chmod 755 1.txt
3.修改文件或目录属有者:chmod 用户名 文件名
六、linux ftp的使用(默认的ftp server 是vsftp)
1.架设ftp server
2.启动ftp命令:service vsftpd start;重启命令:service vsftpd restart
3.停止ftp命令:service vsftpd stop
4.修改vsftp server的参数在文件/etc/vsftpd/vsftpd.conf中
5.查看服务是否启动
6.设置网络的命令:ifconfig
7. 防火墙命令:
1)重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off 或者 /sbin/chkconfig --level 2345 iptables off
2) 即时生效,重启后失效
service 方式
开启: service iptables start
关闭: service iptables stop
iptables方式
查看防火墙状态:
/etc/init.d/iptables status
暂时关闭防火墙:
/etc/init.d/iptables stop
重启iptables:
/etc/init.d/iptables restart
8.ftp的根目录:/var/ftp
9.默认的匿名用户(anonymous)可以下载不能上传
10.vsftp 拒绝访问用户配置文件:/etc/vsftpd/vsftpd.user_list和vsftpd.ftpusers 把里面特定的用户删了就可以登录了
11.上传命令:put
12.vsftpd开机自启动,有两种方式,第一种是该rc.local文件,在文件中加/user/local/bin/vsftpd & (&表示是一个后台进程),
第二中方式是用chkconfig --level 5 vsftpd on。
七、jdk的安装
1.安装jdk,下载jdk的安装文件(.bin文件,也可以是其他文件),在jdk目录下敲命令./jdk安装文件就可以执行了,执行完后
默认安装在了/usr/java目录下,如果是rpm文件,那么就直接执行命令:rpm -ivh jdk的rpm文件
2.设置临时环境变量(linux关闭,重开环境变量不再起作用),如JAVA_HOME,命令JAVA_HOME=jdk安装目录 回车
再输入命令 export JAVA_HOME
设置全局环境变量(重启后不变):修改/etc/profile文件或/etc/rc.local文件 在文件中加JAVA_HOME=jdk安装目录 回车
再输入命令 export JAVA_HOME
显示环境变量:echo $JAVA_HOME
如: 设置完了应该如下:
export JAVA_HOME=/usr/local/jdk1.6.0_11
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/:$JAVA_HOME/jre/lib:$CLASSPATH
3.jdk卸载
首先用命令查看linux操作系统下都安装了那些jdk的包,命令:rpm -qa | grep jdk
然后用命令:rpm -e 找到的jdk包或rpm -e --nodeps 找到的jdk包(把依赖的包也删了)
4 一些常用格式文件的安装方法。
http://lanxuezaipiao.blog.163.com/blog/static/93779965201291275419888/
八、安装tomcat
1、到网上下载tomcat的压缩文件,如.gz的压缩文件,先用gzip命令解压成tar文件,例如:gzip -d tomcat的gz文件,解压出来的
tar文件在用tar命令解压文件,例如:tar -xvf tomcat的tar文件
2.启动tomcat命令:在tomcat的bin目录下敲:./startup.sh 注意执行这个命令前一定要设置JAVA_HOME环境变量
九 linux间文件传输scp
scp介绍:主要可以再两个linux主机间复制文件(远程到本地或本地到远程都可以)
命令格式:scp: [可选参数] file_source file_target (是需要输入密码的)
本地文件拷贝到远程文件:
scp local_file remote_username@remote_ip:remote_folder
scp -r /web/hadoop-2.2.0/ node1 将目录/web/hadoop-2.2.0/ 复制到机器node1中相同的目录内
十、ssh生成秘钥(可以直接用ssh-copy-id 处理更简单 ,ssh-copy-id ip(与那个机器进行免密登录))
1 在master中生成公钥
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
-t 秘钥类型,有两种RSA和DSA
将生成一个公私钥的目录,这个目录是隐藏的,可以用ls -a 看到
2 将公钥拷贝一份并换成另一个名字
cat id_dsa.pub >> authorized_keys
十一、GRUB引导程序
linux中GRUB是系统的引导程序,可以再开机的使用按Esc键就可以进入该引导程序
十二、hosts位置 :/etc/hosts ;
环境变量位置:/etc/profile
十三、启动bat文件时候如果关闭窗口程序自动停止,需要后台运行 ,这是要添加 &
./start.bat &
十四、 lrzsz 上传下载工具
安装 yum install lrzsz 使用: sz 文件名 rz 文件名
十五、监听tomcat是否正在运行,没有的话就重启 ,需要卸载任务里面。
netstat -tln |awk '{print $4}' |grep 9000 || {
#/usr/local/php/bin/php-cgi -q -b 9000 -c /usr/local/php/bin/php.ini &
sh /opt/apache-tomcat-6.0.20/bin/startup.sh
}
十六、Service 服务注册
如tomcat,再启动时候必须进入到tomcat目录下面启动,为了方便服务管理,可以将启动的过程写到shell脚本中,放入到/etc/rc.d/init.d 中然后调用service 来管理服务
十七、
以开放8080端口为例。
方法一:命令行方式
1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
2.保存:/etc/rc.d/init.d/iptables save
3.重启服务:/etc/init.d/iptables restart
4.查看端口是否开放:/sbin/iptables -L -n
方法二:直接编辑/etc/sysconfig/iptables文件
1.编辑/etc/sysconfig/iptables文件:vi /etc/sysconfig/iptables
加入内容并保存:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
2.重启服务:/etc/init.d/iptables restart
3.查看端口是否开放:/sbin/iptables -L -n
注:需要注意开放端口的具体协议(标黄的是端口或协议),我当时开放一个端口时,协议搞错了,找了好久才找到原因。
查看端口是否已经开放 /etc/init.d/iptables status
十八:查看和修改Linux的时间
1. 查看时间和日期
命令 : "date"
2.设置时间和日期
例如:将系统日期设定成2009年11月3日的命令
命令 : "date -s 11/03/2009"
将系统时间设定成下午5点56分55秒的命令
命令 : "date -s 17:56:55"
3. 将当前时间和日期写入BIOS,避免重启后失效
命令 : "hwclock -w"
注: date
不加参数可以直接看到当前日期时间
cal
不加参数可以直接看到本月月历
4 日期同步与网络 ntpdate time.windows.com
5 如果日期不正确可能是时区问题:/etc/timezone 和 /etc/localtime 都查一下。
十九、查看某个.so文件的依赖库 用: ldd 文件 ,那个文件找不到可以用find搜索一下。
二十、 ubuntu 中安装的时候不设置root密码,但是会设置一个登陆的用户名和密码 ,需要用这个用户登录,然后sudo passwd root 设置root密码;
1) ubuntu 中vi在编辑模式下,上下键会出现字母,解决方法(删除原来安装新的vim):
sudo apt-get remove vim-common
sudo apt-get install vim
2) ubuntu 安装后ssh客户端不能登录可能是没有安装ssh
sudo apt-get install openssh-server
sudo /etc/init.d/ssh restart
3)ubuntu设置防火墙
sudo ufw disable
sudo ufw enable
十三、查看openssh是否正常启动
netstat -a | more看有没正常启动。
如果出现:tcp 0 0 *:ssh *:* LISTEN
十四、查看系统容量使用情况
目前磁盘空间和使用情况 df -h
输出当前目录下各个子目录所使用的空间 du --max-depth=1 -h
十五、linux一个软件在后台启动 :
客户端跑在后台,则在启动脚本后面添加下面参数:
1>/dev/null 2>&1 & (标准输出1 输出到空文件中 错误输出同标准输出)
十六、lsof命令
lsof -i //显示所有打开的端口
lsof -i:80 //显示所有打开80端口的进程
lsof | wc -l 统计当前打开的总文件数量
十七、工具
nmap ip或者域名 扫描指定机器的
对指定的ip地址服务器进行扫描,查看开启的服务
对指定域名进行扫描
tree :树形显示目录
1)tree -L 1 显示一层目录
2)tree -a 显示所有文件
3)-d显示所有目录
linux系性能和使用活动监控工具sysstat
mpstat -V sysstat version
dos2unix - 将DOS格式文本文件转换成UNIX格式
net-tools:ifconfig、route、arp和netstat等命令行工具(统称为net-tools
netstat -tlnp
ip addr list
摘自网络