您的位置:首页 > 运维架构 > Linux

linux 基础及常用命令

2017-01-19 21:16 169 查看
红帽Linux 5.5 for x86 服务器版  安装码

Red Hat Enterprise Linux Server 5.5 for x86

服务器:

* Red Hat Enterprise Linux (Server including virtualization):

2515dd4e215225dd

+ Red Hat Enterprise Linux Virtualization Platform:

49af89414d147589

客户端:

* Red Hat Enterprise Linux Desktop:

660266e267419c67

+ Red Hat Enterprise Linux Desktop + Workstation Option:

da3122afdb7edd23

+ Red Hat Enterprise Linux Desktop + Workstation + DualOS Option

(Virtualization):

7fcc43557e9bbc42

+ Red Hat Enterprise Linux Desktop + DualOS Option (Virtualization):

fed67649ff918c77

/ 根目录

pwd 当前路径
whoami 显示当前用户

tab 自动补全命令

linux分区的命名 /dev/xxyN

/dev/ 这个字串是所有设备文件所在的目录名

xx 分区名的两个字母标明分区所在设备的类型,hd(IDE磁盘),sd(SCSI)

y 这个字母标明分区所在的设备  /dev/hda (第一个IDE磁盘) 或/dev/sdb (第二个SCSI磁盘)

N 代表分区,前四个分区(主分区或扩展分区) 1-4排列, 逻辑分区5开始

mount 设备 挂载点

umount 设备

quit  退出控制台

shutdown -h now 立即进行关机

shutdown -r now  现在重新启动计算机

reboot          现在重新启动计算机

运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同的功能。

  # 0 - 停机(千万不能把initdefault 设置为0 )  

  # 1 - 单用户模式  

  # 2 - 多用户,没有 NFS  

  # 3 - 完全多用户模式(标准的运行级)  

  # 4 - 没有用到  

  # 5 - X11 (xwindow)  

  # 6 - 重新启动 (千万不要把initdefault 设置为6 )  

vi /etc/inittab

id:5:initdefault:       //若此处改为3,系统将被引导进入文本登录提示纯字符界面

logout  退出当前用户

登录成功时 当前路径默认的是 用户的目录

Ctrl+Alt+F7     字符到图形 

Ctrl+Alt+F6     图形到字符

cmd --help 

man cmd   提示如何使用

mkdir  创健文件

rmdir  文件

rm -r  文件  

rm -rf  文件   强制删除

rm -rf * 删除所有内容包括目录文件  r递归 f强制

touch 文件名 创健文件/查看创建时间

ls -a 查看隐藏

ls -i 文件名  查看节点号

linux ls -l 详解

第1字段: 文件属性字段

d开头目录 是dirtectory(目录)的缩写

-开头文件

l链接文件 字母"l"是link(链接)的缩写,类似于windows下的快捷方式

第1字符的后面9个字母表示该文件或目录的权限位。

r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)

其中前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。

第2字段:

如果是目录则代表子目录个数

文件硬链接数

ln –s 源文件 目标链接文件         软连接相当于快捷方式

ln 源文件 目标链接文件           硬链接 同一文件不同文件名,节点号相同

第3字段:文件(目录)拥有者

第4字段:文件(目录)拥有者所在的组

一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的名称。

可以在useradd的时候用-g指定该用户所在的主组,用-G指定其他组

格式如下:Useradd –g 组名 用户名

第5字段: 文件所占用的空间(以字节为单位)

第6字段:文件(目录)最近访问(修改)时间

第7字段:文件名

more/cat/tac/head
文件名   查看文件内容  tac倒序  head可以带参数

find
查找文件名 . 或者/

find  
-name april*                     在当前目录下查找以april开始的文件
find   -name   april*   fprint file        在当前目录下查找以april开始的文件,并把结果输出到file中
find   -name ap* -o -name may*   查找以ap或may开头的文件
find   /mnt   -name tom.txt   -ftype vfat   在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件

用.来表示当前目录,用/来表示系统根目录。

whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis
程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。

命令参数:

-b   定位可执行文件。

-m   定位帮助文件。

-s   定位源代码文件。

-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

-B   指定搜索可执行文件的路径。

-M   指定搜索帮助文件的路径。

-S   指定搜索源代码文件的路径。

echo
$PATH  查看环境变量(dos echo %path%)

##vi编辑器使用

1、vi hello.java

2、输入 i 【进入插入模式】

3、输入 esc 【进入命令模式】

4、: w 保存 wq 保存退出 

q!退出不保存

vi  可以修改

cat 只能看不能改

VI
  esc命令模式和编辑模式切换

:q!
不保存退出

:wq
  强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。

:x    写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。

这两者一般情况下没什么不一样,但是在编程方面,对编辑源文件可能会产生重要影响。

因为文件即使没有修改,":wq"强制更新文件的修改时间,这样会让make编译整个项目时以为文件被修改过了,

然后就得重新编译链接生成可执行文件。这可能会产生让人误解的后果,当然也产生了不必要的系统资源花销。

useradd adduser  admin 添加用户     如果不指定组会自动创建一个跟用户一样的组

useradd admin2 -g testadmin    指定组添加用户

passwd admin 修改密码

userdel admin 删除用户

usermod -g testadmin admin  修改admin属于 testadmin组

usermod -g 组名 用户名

usermod -d 目录名 用户名   改变该用户登录的初始目录

groupadd testadmin  添加组

cd /etc   more passwd   more group

passwd参数详解

mengqc:x:500:502:mengqc:/home/mengqc:/bin/bash 

注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序 

此外,需要注意的是,如果passwd字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。

group参数详解

 组名:口令:组标识号:组内用户列表

su admin 当前用户 切到 amdin用户  返回当前用户 exit 

当一个用户登录的时候 默认的路径是用户的主目录

chmod  修改权限

chmod -x 1.txt   修改 1.txt为可执行文件权限

chmod u+x 1.txt  只改当前用户的权限 
u

用户的当前权限

 

g

组的当前权限

 

o

其他用户的当前权限

多数用三位八进制数字的形式来表示权限,第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限,每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。

chmod 777 1.txt

ls -ahl //查看文件所有者 /所有组

chown 修改所有者

chown admin 1.txt 修改所有者为admin

chgrp 组名 文件名 修改文件所在组

grep   '搜寻字符串'  filename  它能使用正则表达式搜索文本,并把匹配的行打印出来。

wc 统计指定文件中的字节数、字数、行数

-c 统计字节数。

-l 统计行数。

-m 统计字符数。这个标志不能与 -c 标志一起使用。

-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

-L 打印最长行的长度。

stat命令用于显示指定文件的相关信息

dmesg用于显示系统最后一次启动时内核的内部缓存信息

uname命令用于显示操作系统信息

free命令用于显示当前内存和交换区的使用情况

du 查看指定目录文件的大小 

df 显示文件系统磁盘空间的使用情况

fdisk -l 显示磁盘信息

locale命令用于显示当前系统的语言设置

hostname 命令用于显示当前本地主机的名称

date命令用于显示系统当前的日期和时间。配合参数“-s”可以对系统的日期、时间重新进行设定

# date  

Fri Nov 15 16:11:13 CST 2013  

# date -s 1989-09-14  

Thu Sep 14 00:00:00 CDT 1989  

# date -s 11:23:33  

Thu Sep 14 11:23:33 CDT 1989  

# date  

Thu Sep 14 11:23:41 CDT 1989  

time命令用来计算执行一个进程所需的时间。包括实际CPU时间、用户CPU时间和系统时间。

ps命令用于监测进程的工作情况。它所显示的进程工作状态是瞬时的

ps -ef 列出所有进程

history命令用于保留最近执行的命令,默认可以保留500个。快速重新执行已经执行过的命令可以用“!命令事件号"

col  当我们运用shell特殊字符>和>>,把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col命令则能有效滤除这些控制字符

-b:过滤掉所有的控制字符,包括RLF和HRLF;

 -f:滤掉RLF字符,但允许将HRLF字符呈现出来;

 -x:以多个空格字符来表示跳格字符;

 -l<缓冲区列数>:预设的内存缓冲区有128列,用户可以自行指定缓冲区的大小

>   是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节);

>>

这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响

2> 错误信息重定向

< 重定向输入

wall < 4.txt 

管道--将一个命令的输出传送到另一个命令,作为另一个命令的输入

ls -RI /etc | more    分页  空格翻页

cat /etc/passwd | wc  统计字节数 行数

cat /etc/passwd | grep root  查找包含root的所有行

dmesg | grep eth0  查找网卡0的信息

ls -l | grep "^d" > 1.txt

ls -l | grep "^-" | wc -l

wall (warning all) 警告所有用户     wall `date`

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

ftp服务的启动和关闭命令为:service vsftpd strat/stop/restart

 service vsftpd start 

vsftpd: unrecognized service

vi   /etc/xinetd.d/gssftp  把disable=yes改成no,然后打开ftp服务

把server_args     = -l -a  改成  server_args     = -l  把 -a 去掉,这样系统的用户才有权限用ftp登陆

service xinetd restart  重新启动才生效

ftp localhost 检测是否成功安装

ifconfig 显示网卡信息(windows ipconfig)

ping ftp 192.168.26.128  ping不通连不上 关掉linux防火墙

Linux下如何关闭防火墙

临时关闭,即时生效,重启失效

# 关闭防火墙

$ service iptables stop

# 开启防火墙

$ service ipt
ef8b
ables start

永久关闭,重启生效

# 关闭防火墙

$ chkconfig iptables off

# 开启防火墙

$ chkconfig iptables on

leapFTP注册码

o+q2oT7FV1yFJwQ2nT/y1gJamqKc MFUeWX24baJ4j49WGXrJ4oeCZ7ID e4cmD5x722qksnqMqva36QHHanXz L06NVr/Ae/xPmJ/e1QjdiOd8VRGM O0W7LlofbwnKdVqAmqCTv4hp82o9 niTCQTm+PisvGWtxcIjQ2nPJoyET RvGAfDlPT8zYTJ0UtpYXOhq5Kvkh dIHDelsrryAS+dA7XS4/H2odMeRo HEeWX+WqEvK0ur9Rp28Z+obdCY0S
ar13y/sg6DwgNbsHg2P2awreNj7n EP7LRdSnlDPGR/+a6/ysy4KduU37 cTFUqIG/GaKB

wget url  从网址下载文件

现在较新的Linux系统中,光驱设备是都是自动挂载的,自动挂载在

先看看你的光驱:  ls -l /dev/cdrom |grep cd

mkdir /mnt/cdrom              ;先是建立一个挂载文件夹出来

mount /dev/cdrom /mnt/cdrom      ;

将ISO所在的/dev/cdrom里面的文件挂载到指定/mnt/cdrom里面,完成挂载.

mkdir /mnt/cdrom              ;先是建立一个挂载文件夹出来

mount /dev/cdrom /mnt/cdrom      ;

将ISO所在的/dev/cdrom里面的文件挂载到指定/mnt/cdrom里面,完成挂载.

cp 文件 目录   拷贝文件到目录

使用which java 和 which javac 分别可以看到

简单说一下,就是把这2个文件ln -s 到我们新的jdk 下的 java 和 javac 上,命令如下:

rm -rf /usr/bin/java

rm -rf /usr/bin/javac

 ln -s $JAVA_HOME/bin/javac /usr/bin/javac

ln -s $JAVA_HOME/bin/javac /usr/bin/java

###安装方式

【./xxx.bin 】     ./ 安装

tar -xzvf soft.tar.gz //一般会生成一个soft目录

.tar.gz 

解压:tar zxvf FileName.tar.gz 

压缩:tar zcvf FileName.tar.gz DirName 

.tar 

解包:tar xvf FileName.tar 

打包:tar cvf FileName.tar DirName 

tar

-c: 建立压缩档案

-x:解压

-t:查看内容

-r:向压缩归档文件末尾追加文件

-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的

-j:有bz2属性的

-Z:有compress属性的

-v:显示所有过程

-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

压缩

tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg

tar –czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

tar –cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for Linux

zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

1、*.tar 用 tar –xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar –xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar –xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar –xZf 解压

8、*.rar 用 unrar e解压

9、*.zip 用 unzip 解压

./configure  --prefix=/usr/bin/xx  把所有文件装在目录 /usr/bin/xx

make

make install

rpm安装

rpm -ivh xx.rpm

rpm -qa|gerp vsftpd 检测软件是否安装

-ivh:安装显示安装进度--install--verbose--hash

-Uvh:升级软件包--Update;

-qpl:列出RPM软件包内的文件信息[Query Package list];

-qpi:列出RPM软件包的描述信息[Query Package install package(s)];

-qf:查找指定文件属于哪个RPM软件包[Query File];

-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];

-e:删除包

-q 查询软件名是否安装

停止并卸载Linux系统自带的httpd服务:

1、service httpd stop

2、ps -ef | grep httpd

3、kill -9 pid号(逐个删除)

4、rpm -qa |grep httpd

5、rpm -e httpd软件包

netstat -natp |grep 20  ,netstat -natp |grep 21 查看端口是否被占用

如果被xinetd占用  切换到/etc/xinetd.d/ 把FTP disable=yes  重启服务即可

####FTP不能上传问题解决####

2/#查看ftpd_disable_trans ftp_home_dir allow_ftpd_full_access 是否为on。

getsebool -a|grep ftp

#如果不是则使用

setsebool allow_ftpd_full_access on 

setsebool ftpd_disable_trans on

setsebool ftp_home_dir on

但是这两个命令只对当前状态有效,若重启系统后会还原回原来的值。

若想永远生效,可以用命令setsebool -P ftpd_disable_trans 1或setsebool -P ftp_home_dir 1来更改。

problems

     500 OOPS: vsftpd: security: 'one_process_model' is anonymous only

添加或修改vsftpd.conf如下选项

one_process_model=no

vsftpd开机自启动

1:用vi打开etc/rc.local.在里面加入/usr/local/bin/vsftpd &即可.

2:chkconfig vsftpd on (意思是所有的启动级别都会自动启动vsftpd服务) 

chkconfig用来检查服务是否启动推荐使用chkconfig --level<这里参数是启动级别> vsftpd on 

比如:chkconfig --level 5 vsftpd on ,在当启动图形界面的level时会自动启动vsftpd服务。

 匿名用户登录vsftpd服务后的根目录是

/var/ftp/;

系统用户登录vsftpd服务后的根目录是系统用户的家目录。

getconf LONG_BIT  查看系统是32位还是64位

lsb_release -a  查看Linux版本信息

//jdk安装

vi /etc/profile

/home/work/jdk1.7.0_67

export JAVA_HOME=/home/work/jdk1.7.0_67

export PATH=$PATH:$JAVA_HOME/bin

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JRE_HOME/lib

source profile // 让profile立即生效

或者直接命令窗口输入 临时设置,即时生效

export JAVA_HOME=/home/work/jdk1.7.0_67  

简单说一下,就是把这2个文件ln -s 到我们新的jdk 下的 java 和 javac 上,命令如下:

rm -rf /usr/bin/java

rm -rf /usr/bin/javac

ln -s $JAVA_HOME/bin/javac /usr/bin/javac

ln -s $JAVA_HOME/bin/java /usr/bin/java

/lib/i386/client/libjvm.so: cannot restore segment prot after reloc: 权限不够

据说是问题是安全级别和防火墙导致的

或从系统->管理->安全级别和防火墙->SELinux ->禁用

vi /etc/sysconfig/selinux   /etc/selinux/config

#SELINUX=enforcing

SELINUX=disabled

这样重启linux服务器就可以正常了.

解压tomcat  运行

本地浏览器设置不用代理 192.168.26.1   8080      以下ip不用代理192.168.26.128

/etc/rc.local  设置开机自启  要重申一遍JAVA_HOME

/tomcat8/bin/startup.sh

/etc/profile  用户登录才生效

yum install httpd

httpd -v 查看版本

yum clean all 清楚缓存

yum makecache就是把服务器的包信息下载到本地电脑缓存起来

配合yum -C search xxx使用

不用上网检索就能查找软件信息

Centos上网修改

1. 虚拟机网络连接方式设置成NAT。

2. window系统下的两个服务VMwareDHCP Service和VMware NAT Service需要启动。

3. 用vi编辑文件/etc/sysconfig/network-scripts/ifcfg-eth0,我的系统中没有双引号,如下所示:

BOOTPROTO=dhcp(没变)

ONBOOT=yes(修改之前是no)

NM_CONTROLLED=no(修改之前是yes)

修改完之后,保存退出。

4. 再输入service network restart。

/etc/yum.repos.d/CentOS-Base.repo

Centos 引入新的yum源makecache 依然不能安装软件

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6  运行之后就能安装

USER    用户名
UID    用户ID(User ID)
PID    进程ID(Process ID)
PPID    父进程的进程ID(Parent Process id)
SID    会话ID(Session id)
%CPU    进程的cpu占用率
%MEM    进程的内存占用率
VSZ    进程所使用的虚存的大小(Virtual Size)
RSS    进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。
TTY    与进程关联的终端(tty)
STAT    进程的状态:进程状态使用字符表示的(STAT的状态码)
R 运行    Runnable (on run queue)            正在运行或在运行队列中等待。
S 睡眠    Sleeping                休眠中, 受阻, 在等待某个条件的形成或接受到信号。
I 空闲    Idle
Z 僵死    Zombie(a defunct process)        进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
D 不可中断    Uninterruptible sleep (ususally IO)    收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
T 终止    Terminate                进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。
P 等待交换页
W 无驻留页    has no resident pages        没有足够的记忆体分页可分配。
X 死掉的进程
< 高优先级进程                    高优先序的进程
N 低优先    级进程                    低优先序的进程
L 内存锁页    Lock                有记忆体分页分配并缩在记忆体内
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+ 位于后台的进程组 
START    进程启动时间和日期
TIME    进程使用的总cpu时间
COMMAND    正在执行的命令行命令
NI    优先级(Nice)
PRI    进程优先级编号(Priority)
WCHAN    进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
FLAGS    与进程相关的数字标识

4、kill 终止(杀死)进程,有十几种控制进程的方法,下面是一些常用的方法:
[root@localhost ~]#kill -STOP
[pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
[root@localhost ~]#kill -CONT
[pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程。
[root@localhost ~]#kill -KILL
[pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
[root@localhost ~]#kill -9 -1
终止你拥有的全部进程。
SIGKILL 和 SIGSTOP 信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 命令