CentOS日常使用过程中积累的Shell脚本或Linux命令,持续维护更新
网络设置
HostName主机名
1 | 查看hostname |
静态IP设置
下载 static-ip-centos6.sh
参数: static-ip.sh <hostname> <interface> <baseip> <ipaddress> <gateway/dns>
示例1
chmod +x ./static-ip.sh && ./static-ip.sh localhost eth0 192.168.1 81 1
下载 static-ip-centos7.sh
参数: 在文件中修改ip相关参数
手动设置IP
1 | 临时设置IP |
1 | 针对特定的网卡进行手动设置 |
集群环境下ssh免密码登陆认证脚本
- 确保各节点安装ssh,expect
- 把所有文件拷贝到主节点上
- 配置hosts.conf和slaves.conf
- 执行keygen_master
1 | chmod +x keygen_master.sh |
PS查看进程
通常用ps查看进程PID,kill终止进程
- grep 是搜索
例如:ps -ef | grep java
表示查看所有进程里 CMD 是 java 的进程信息 - -aux 显示所有状态
ps -aux | grep java
- kill 命令用于终止进程
例如:kill -9 [PID]
-9 表示强迫进程立即停止
端口查看
如查看80端口:lsof -i tcp:80
列出所有端口:netstat -ntlp
nohup后台运行
后台运行test.jarnohup java -jar test.jar
不输出nohup日志:>/dev/null 2>&1 &nohup java -jar test.jar >/dev/null 2>&1 &
重定向
- 0 表示标准输入
- 1 标准输出,在一般使用时,默认的是标准输出
- 2 标准错误信息输出
可以用来指定需要重定向的标准输入或输出。例如,将某个程序的错误信息输出到log文件 中:./program 2>log。这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。另外,也可 以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。 - /dev/null
它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。当我们不需要回显程序的所有信息时,就可以将输出重定到/dev/null。
读取文件头/尾/实时内容
- head filename读取头部,使用命令head。默认显示文件 filename 的前十行内容
head -n 20 filename
:显示文件的前20行内容head -n -20 filename
:若n后面的整数为负数时,如则表示列出除尾部的20行外的所有行 - tail filename 读取尾部,使用命令tail,使用方法同head相似
tail -n 20 filename
:显示文件的最后20行内容tail -n +20 filename
:显示文件自第20行开始后的所有行(包括第20行) tail -f filename
:动态显示最新的文件内容
具体用法man head或man tail获取
chkconfig问题
chkconfig —add myservice问题:service myservice does not support chkconfig
我们一般在脚本开头加入下面两句就好了vim /etc/init.d/myservice
添加下面两句到 #!/bin/bash 之后
1 | !/bin/bash |
图形化界面切换CentOS6
vim /etc/inittab
1 | Default runlevel. The runlevels used by RHS are: |
图形化界面切换CentOS7
使用systemd创建符号链接指向默认运行级别。
- 首先删除已经存在的符号链接
rm /etc/systemd/system/default.target
- 默认级别转换为3(文本模式)
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
或者默认级别转换为5(图形模式)ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
- 重启
reboot
文件操作
mkdir 新建目录
mkdir -p 无目录新建目录
touch 新建文件
eg:touch test.log
追加文本到文件
eg:echo "/opt/cm/etc/init.d/cloudera-scm-server start" >> /etc/rc.local
rm 文件删除参数:
1 | -r 就是向下递归,不管有多少级目录,一并删除 |
需要提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的
tar文件解压
tar在linux上是常用的打包、压缩、加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数
1 | -c :create 建立压缩档案的参数; |
VIM操作
http://www.eepw.com.cn/article/48018.htm
vi删除*.swp临时文件删除
i插入
esc命令行
:底行(x或:wq保存)
查找操作
find
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
find的使用格式如下:1
2
3
4 $ find <指定目录> <指定条件> <指定动作>
- <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
- <指定条件>: 所要搜索的文件的特征。
- <指定动作>: 对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
find的使用实例:1
2
3
4
5
6 $ find . -name "my*"
搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
$ find . -name "my*" -ls
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
$ find . -type f -mmin -10
搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
locate
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
locate命令的使用实例:
1 | $ locate /etc/sh |
whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
whereis命令的使用实例:$ whereis grep
which
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which命令的使用实例:$ which grep
type
type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
type命令的使用实例:
1 | $ type cd |
系统时间
- date 查看系统时间
- date -s 修改时间
如:date -s 03/04/2013(将系统日期设定为2013年03月04日) - date -s 110:38(将系统时间设定为上午 10:38)
修改完后执行:clock -w ,强制将时间写入COMS!
chmod命令详解
使用权限:所有使用者
使用方式:chmod [-cfvR] [—help] [—version] mode file…
说明:
Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。
mode :权限设定字串,格式如下 :[ugoa…][[+-=][rwxX]…][,…],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
范例:
将档案 file1.txt 设为所有人皆可读取
chmod ugo+r file1.txt
将档案 file1.txt 设为所有人皆可读取
chmod a+r file1.txt
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该档案拥有者可以执行
chmod u+x ex1.py
将目前目录下的所有档案与子目录皆设为任何人可读取
chmod -R a+r *
此外chmod也可以用数字来表示权限如 chmod 777 file
语法为:chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
范例:
chmod a=rwx file 和 chmod 777 file 效果相同
chmod ug=rwx,o=x file 和 chmod 771 file 效果相同
若用chmod 4755 filename可使此程式具有root的权限
chown命令详解
使用权限:root
使用方式:chown [-cfhvR] [—help] [—version] user[:group] file…
说明:Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27user : 新的档案拥有者的使用者
IDgroup : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
范例:
将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie
chown jessie:users file1.txt
将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport
chown -R lamport:users *
-rw------- (600) -- 只有属主有读写权限。
-rw-r--r-- (644) -- 只有属主有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) -- 只有属主有读、写、执行权限。
-rwxr-xr-x (755) -- 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) -- 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) -- 所有用户都有文件读、写权限。这种做法不可取。
-rwxrwxrwx (777) -- 所有用户都有读、写、执行权限。更不可取的做法。
以下是对目录的两个普通设定:
drwx------ (700) - 只有属主可在目录中读、写。
drwxr-xr-x (755) - 所有用户可读该目录,但只有属主才能改变目录中的内容
suid的代表数字是4,比如4755的结果是-rwsr-xr-x
sgid的代表数字是2,比如6755的结果是-rwsr-sr-x
sticky位代表数字是1,比如7755的结果是-rwsr-sr-t
scp命令详解
关于scp
scp是secure copy的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。
scp命令的用途
scp在网络上不同的主机之间复制文件,它使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远程拷贝文件。
scp命令基本格式:scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
scp命令的参数说明
1 | -1 强制scp命令使用协议ssh1 |
从本地服务器复制到远程服务器
复制文件命令格式:1
2
3
4scp local_file remote_username@remote_ip:remote_folder
scp local_file remote_username@remote_ip:remote_file
scp local_file remote_ip:remote_folder
scp local_file remote_ip:remote_file
实例1
2
3
4scp /home/linux/soft/scp.zip root@www.mydomain.com:/home/linux/others/soft
scp /home/linux/soft/scp.zip root@www.mydomain.com:/home/linux/others/soft/scp2.zip
scp /home/linux/soft/scp.zip www.mydomain.com:/home/linux/others/soft
scp /home/linux/soft/scp.zip www.mydomain.com:/home/linux/others/soft/scp2.zip
复制目录命令格式:1
2scp -r local_folder remote_username@remote_ip:remote_folder
scp -r local_folder remote_ip:remote_folder
实例:将 本地 soft 目录 复制 到 远程 others 目录下,即复制后远程服务器上会有/home/linux/others/soft/ 目录1
2scp -r /home/linux/soft/ root@www.mydomain.com:/home/linux/others/
scp -r /home/linux/soft/ www.mydomain.com:/home/linux/others/
从远程服务器复制到本地服务器
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
例如1
2scp root@www.mydomain.com:/home/linux/soft/scp.zip /home/linux/others/scp.zip
scp -r www.mydomain.com:/home/linux/soft/ /home/linux/others/
rpm命令
命令格式 rpm {-q|—query} [select-options] [query-options]
yum命令
yum切换阿里云源
1 | mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup |
查询
yum search {name}
安装
yum install {name}