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

linux常用命令总结之一

2016-01-18 23:02 676 查看
********************************************************************************************************************************************************

标准输出(0)、标准输出(1)、标准错误(2)

在普通用户的身份下:(su - redhat)

输入命令: find /etc -name passwd

包含正确信息和错误信息

将正确信息和错误信息分开,产生标准输出和标准错误

输入命令:find /etc -name passwd 1> /test/stdout 2> /test/stderr

查看标准输出、标准错误的内容

cat stdout

cat stderr

******************************************************************************************************************************************************************

vim(编辑器)的四种模式:

(1)普通模式:文本的查看

(2)插入模式:(i I a A s S o O)

(3)命令模式:执行相关命令(在普通模式下键入:)

w 保存

q 退出

wq 保存并退出

wq! 保存并退出(对于重要文件)

q! 强制退出 (对于重要文件,之前的)

(4)视图模式

1)对列操作:

(ctrl+v)进入视图模式---->选中操作的列--->'I'(设置添加内容)--->Esc

2)对行操作

(shift+v)进入视图模式--->选中操作的行

y 复制

p 粘贴

d 删除

替换操作:

%s///g 全局操作

例:%s/nologin/hello/g

, s///g 局部操作

例 2,10s/\/nologin/hello/g 2到10行将/nologin 替换成hello

vim的应用: 第三方插件

步骤:

1> (没有ctags命令的)

使用yum仓库安装

yum install ctags -y

2>cd /usr/include

3>ctags -R

4>vim /etc/vimrc

5>进入配置文件之后,添加:

set tags=/usr/include/tags

set tags+=/mnt/linux_kernel/tags

6>以上步骤完成后,则完成配置

vim -t NULL

vim -t task 查看进程

vim -t printf 查看printf函数

ctrl+] 查看结构体中的结构体

ctrl+o 退出

*******************************************************************************************************************************************************************

useradd 创建用户 (只有超级用户才能创建)

id + 用户名 验证用户是否存在

su - redhat 切换用户

root@localhost root:代表用户 localhost:代表主机

hostname 查看主机名

hostnamectl 查看详细信息(包括系统型号、主机名等)

$ 代表普通用户

# 代表超级用户

userdel -r 彻底删除用户(推荐使用)

userdel (不彻底删除)

****************************************************************************************************************************************************************

添加新用户

步骤(本例中添加用户redhat1):

1) vim /etc/passwd

添加内容:redhat1:x:1003:1003:redhat1:/home/redhat1:/bin/bash

2)vim /etc/shadow

添加内容:redhat1:!!:16809:0:99999:7:::

3)vim /etc/group

添加内容:redhat1:x:1003:redhat1

4)在家目录下创建目录

cd /home

mkdir redhat1

ll(显示详细信息) 可看到redhat1的拥有者和所属组都为root

5)修改所属组和拥有者

chown redhat1.redhat1 redhat1/

6)此时用ll查看时redhat1拥有者和所属组都为redhat1

7)使用命令su - redhat1 可切换到用户redhat1下

效果如下所式:

[root@localhost home]# su - redhat1

-bash-4.2$ cd /

-bash-4.2$ ls

bin dev home lib64 mnt proc run srv tags tmp usr

boot etc lib media opt root sbin sys test tools var

-bash-4.2$

8)稍作修改:

cd /home/redhat1

cp /etc/skel/.* ./

9)效果如下:

[root@localhost redhat1]# su - redhat1

Last login: Tue Jan 12 10:51:38 CST 2016 on pts/0

[redhat1@localhost ~]$ ls

[redhat1@localhost ~]$ cd /

[redhat1@localhost /]$ ls

bin dev home lib64 mnt proc run srv tags tmp usr

boot etc lib media opt root sbin sys test tools var

[redhat1@localhost /]$

10)到此为止,新用户redhat1创建完毕

*************************************************************************************************************************************************************

权限下放(用普通用户创建新用户) sudo

visudo 配置信息(如果编辑错误时回报错) === vim /etc/sudoers (如果编辑出错,不会报错)

推荐使用 visudo

步骤:

1)键入命令:visudo

进入到了配置信息--->键入 : ---> 进入命令行 键入 99 ---> 在第99行添加

redhat localhost=(root) /usr/sbin/useradd , /usr/sbin/userdel

2)如果你的普通用户redhat没有密码,首先使用root身份给redhat设置密码

passwd redhat

3)密码设置好以后,切换到reahat普通用户下

sudo su - redhat

4) 使用useradd redhat2 添加新用户

其拥有者和所属组都是redhat2

5)到此为止,用普通用户添加新用户的任务已完成。

******************************************************************************************************************************************************

权限管理:

-rwxrwxrwx

1)第一个字符说明文件的类型:

- 代表普通文件类型

c 代表字符设备

b 代表磁盘设备

d 代表目录

l 代表链接文件

p 代表管道文件

s 代表套接字

后面9个字符分为三组

2)第一组代表拥有者(u), 第二组代表所属组(g)。第三组代表其他组(o)

3)其中每组三个字符分别为:r、w、x

r 可读 ==4

w 可写 ==2

x 可执行 ==1

chown 修改所属用户和组

chmod 修改文件权限

chgrp 修改组

对于目录的权限:

目录的可读可写 指对成员的删除和创建

目录的可执行 指可以看成员

如果想要修改目录和目录内文件的权限,使用-R参数

********************************************************************************************************************************************************

suid 针对可执行文件

对于普通用户redhat来说,使用touch命令创建的文件,其拥有者为redhat,所属组为redhat;

对于超级用户root来说,使用touch命令创建的文件,其拥有者为root,所属组也为root

使用命令chmod u+s touch 使得普通用户用touch创建的文件其拥有者为root,而不是redhat,所属组仍是redhat

1)cd /bin (调转到bin目录下)

2)chmod u+s touch

3)切换到普通用户(su - redhat),使用touch创建的文件其拥有者就属于root,但所属组仍是redhat

*********************************************************************************************************************************************************

sgid 针对目录

对于普通用户redhat,使用mkdir test1 创建目录后,在目录内创建文件,

touch file{1..2},

切换用户到普通用户westos ,在目录test1内创建文件,touch file{3..4}

则用户redhat 既可以删除自己创建的文件file1和file2,也可删除普通用户westos创建的文件file3和file4,对于普通用户westos也是如此,可使用命令chmod g+s test1 来避免这一问题。

切换到root下,使用命令chmod g+s test1

则普通用户redhat,只能删除自己创建的文件file1和file2;

对于普通用户westos,只能删除自己创建的文件file3和file4,增加了安全性。

*****************************************************************************************************************************************************

关于密码的加密方式:

westos:$6$pExetOF0/yap.g9H$Pz9k0MvQbc8kKEcfIsdEKPcmmAebFAtD.4J6m1iT8rej5CPMTULm4pMBYcbyEOkzt7TeKaI1KWGUFCsdd0fu..:16809:0:99999:7:::

其中westos代表用户 6 代表加密方式为 SHA-512 pExetOF0/yap.g9H 称为混淆值(salt)

1 代表加密方式为md5

5 代表加密方式为SHA-256

编写一个c程序产生加密后的字符串

vim crypt_SHA_512.C

程序:

#include<stdio.h>

#include<stdlib.h>

#include<unistd.h>

#if 1

6

7 int main(int argc,char **argv)

8 {

9 char *buf =NULL;

10

11 //参数检测

12

13 if(argc != 2){

14 fprintf(stderr,"usage:/crypt passwd. \n");

15 exit(1);

16 }

17 printf("the passwd is :%s\n",argv[1]);

18 //加密

19 buf = crypt((const char *)argv[1],"$6$awervill32");

20 printf("the crypt passwd:%s\n",buf);

21

22 return 0;

23

24 }

25 #endif

编译程序:

gcc crypt_SHA_512.c -o crypt -lcrypt

在命令行输入: ./crypt redhat

执行结果:

the passwd is :redhat

the crypt passwd:$6$awervill32$eAQuuToIp5u/sBRMfVLn6DBJ2MmooRA/m/shfZ.zktRst4QXwhH8vNlK1t8XrTA8uALjp3tO6.hmyTw99s6Sz.

**********************************************************************************************************************************************************

设置文件的初始权限:

umask

目录权限:777-umask

文件权限:777-111-umask (去除可执行权限)

******************************************************************************************************************************************************************************

小文件对磁盘的影响:

1)用dd命令指定一块空间

dd if=/dev/zero of=/test/largefile bs=1M count=100

2)格式化这块空间

mkfs.ext4 /test/largrfile

3)挂载:

mount /test/largefile /tmp

可用df查看

4)编写脚本

vim full_shell.sh

1 #!/bin/bash

2

3 for ((i=1; ;i++))

4 do

//判断上一次创建爱你是否成功,成功继续创建,否则退出

5 if [ $? -eq 0 ]; then

6 echo "this is test file_${i}" > /tmp/large_file${i}

7 else

8 exit 1

9 fi

10 done

11

5)使用命令 du -sh /tmp 查看磁盘大小的消耗

脚本执行之前看到磁盘的大小消耗为13K

6)执行脚本:

使用命令 bash full_bash.sh

或者:chmod +x full_shell.sh

7)执行完shell脚本后,再次使用命令 du -sh /tmp

可看到磁盘消耗为29M

申请的空间大小为100M,对于磁盘来说:分控制信息+存储信息,

由于小文件把控制信息消耗完了,导致存储空间还有剩余却无法存储。

使用命令 df -iT /tmp 可看到inode数量已用完!!!!

ll -i 列出文件inode编号

****************************************************************************************************************************************************

软链接和硬链接

(1)软链接:软链接和原来的文件不是同一个文件(inode不同(ll -i 命令查看))

对原文件的修改会影响链接文件,对链接文件的修改也会影响原文件

如果原文件删除,链接失败,

软链接可以对不存在的文件建立,只是无法使用,如果创建原文件,链接生效。

cd /test

touch file

ln -s /test/file /test/file_l

ll

echo "hello,world" > ./file

cat file

显示结果: hello,world

cat file_l

显示结果:hello,world

echo "hello" > ./file_l

cat file

显示结果: hello

cat file_l

显示结果:hello

2)硬链接:硬链接和原来是同一个文件 ,硬链接只能针对文件,不能针对目录建立

相当于一块空间上有很多指针,只有将其全删除,文件才算删除。

ln /test/file /test/file_l

如果将文件file_l删除,然后重新创建时,链接不会生效!!!!

***************************************************************************************************************************************************

redhat 6 服务管理(串行)

[root@server3 init.d]# /etc/init.d/httpd start

Starting httpd: [ ok ]

[root@server3 init.d]# /etc/init.d/httpd stop

Stopping httpd: [ ok ]

[root@server3 init.d]# /etc/init.d/httpd start

Starting httpd: [ ok ]

[root@server3 init.d]# /etc/init.d/httpd reload

Reloading httpd: [ ok ]

[root@server3 init.d]# /etc/init.d/httpd restart

Stopping httpd: [ ok ]

Starting httpd: [ ok ]

redhat 7 服务管理(并行)

[root@server init.d]# systemctl start|stop|restart|status|enable|disable vsftpd

I*****************************************************************************************************************************************************************

远程访问

(1)root@server .ssh]# ssh root@192.168.3.252

第一次获取对方公钥的内容放在:

/root/.ssh/know_hosts (超级用户)

/home/westos2/.ssh/know_hosts (用自身的普通用户登陆时)

如果ssh速度慢,则需要做解析 /etc/hosts

例:

eg:

192.168.3.243 server3.examole.com

ip+地址

/etc/hosts和dns服务器那个为标准?

[root@server .ssh]# vim /etc/nsswitch.conf

#hosts: db files nisplus nis dns

hosts: files dns

(2)ssh通过公私钥进行访问

[root@server .ssh]# ssh-keygen

默认生成路径在/root/.ssh/目录中:

id_rsa(私钥) id_rsa.pub(公钥)

非对称加密

把公钥发送给指定用户(需要进行密码验证)

[root@server .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.3.155

如果成功,下次ssh登陆对方使用公私钥口令验证,无需通过密码验证

指定验证的私钥(无需输入口令)

[root@server .ssh]# ssh-add /root/.ssh/id_rsa

************************************************************************************************

远程拷贝文件

远程文件拷贝

(1)本地拷贝到远程主机

[root@localhost Desktop]# scp ./full_shell.sh root@192.168.3.252:/root/Desktop/

(2)远程主机的内容拷贝到本地(少见)

[root@server Desktop]# scp -r root@192.168.3.155:/root/Desktop/install ./

*如果是目录,添加-r参数

*************************************************************************************************************************************************************

压缩、解压、聚合

(1)查看压缩包的分布

[root@server test]# vim linux-3.18-rc6.tar.xz

(2)把压缩包解压到制定目录

[root@server test]# tar xvf linux-3.18-rc6.tar.xz -C ./

(3)聚合文件(非压缩)

[root@server tar_file]# tar cvf tar.file.gz ./*

(4)压缩方式:

-j, --bzip2

-z, --gzip

filter the archive through bzip2

filter the archive through gzip

[root@server test_etc]# tar cvfj tar.etc.bz2 ./etc/*

[root@server test_etc]# tar cvfz tar.etc.gz ./etc/*

例如:

cd /test/test1

touch file{1..100}

tar cvfj tar.file.bz2 ./*

tar cvfz tar.file.gz ./file*

tar cvfz tar.file_ll.gz ./file*

结果显示:

-rw-r--r--. 1 root root 61440 Jan 12 20:06 tar.file

-rw-r--r--. 1 root root 456 Jan 12 20:04 tar.file.bz2

-rw-r--r--. 1 root root 896 Jan 12 20:04 tar.file.gz

-rw-r--r--. 1 root root 61440 Jan 12 20:06 tar.file_ll.gz

[root@localhost test1]#

*******************************************************************************************************************************************

unzip 解压

zip压缩

例如:

507 unzip -o -d ./test1 phpMyAdmin-4.5.2-all-languages.zip

508 cd test1

509 ls

510 touch file{1..50}

511 zip -r my_file ./file*

512 ls

513 rm file* -fr

514 ls

515 unzip -o -d ./ my_file.zip

516 ls

517 history

[root@localhost test1]#

使用make命令进行安装

cd /test

1) 解压安装包

tar xvf rarlinux-4.0.1.tar.gz -C ./

2)cd rar

3)make (安装)

4)yum install libstdc++.so.6 -y

rar压缩:

rar file.rar ./file*

rar解压:

解压

[root@server test]# rar -o+ e file.rar

(遇到和解压文件相同的名称,直接覆盖)

**************************************************************************************************************

yum repo 指定路径:

[root@server3 init.d]# cd /etc/yum.repos.d/

文件必须以repo结尾:

[root@server3 yum.repos.d]# vim redhat.repo

[source]

name="install source"

baseurl=ftp://192.168.3.252/pub/rhel7.0

gpgcheck=0

设置完使用yum clean all进行更新:

yum clean all

设置本地镜像:

1)得到镜像文件,必须和自己的操作系统版本一致

将镜像文件放在/tools

mv rhel-server-7.0-x86_64-dvd.iso /tools

2)把iso文件挂载到指定目录下

vim /etc/fstab

添加: /tools/rhel-server-7.0-x86_64-dvd.iso /var/ftp/pub iso9660 defaults,loop 0 0

3)vim /etc/yum.etc.repos.d/yum.repo

编辑:

1 [source]

2 name=localserver

3 baseurl=file:///var/ftp/pub

4 gpgcheck=0

5 enable=1

4)yum clean all

到此为止配置完毕!!!!!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: