/etc/init.d是/etc/rc.d/init.d文件夹的软连接,这个文件夹的主要做用是在该目录下寻找服务脚本,而且根据脚本的run level肯定不一样的启动等级。即本质上,该文件夹内是各类各样的shell脚本。linux
CentOS和Ubuntu,须要在两个版本中均可以开机启动服务。但Ubuntu没有 /etc/rc.d/init.d这个目录,因此,为了保持同一种服务在CentOS和Ubuntu使用的统一性,将服务脚本(注:服务脚本在两个不一样版本中是不一样的)都放在 /etc/init.d 目录下,最终达到的效果是相同的web
检查、设置系统的各类服务,能够查询操做系统在每个执行等级中会执行哪些系统服务,包括各种常驻服务。shell
谨记chkconfig不是当即禁止或者激活一个服务,而是简单改变了符号链接。apache
等级代号列表: 等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络链接的多用户命令行模式 等级3表示:有网络链接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:从新启动swift
普通用法不用在乎引号windows
grep match_pattern file_nametomcat
grep "match_pattern" file_namebash
正则使用 grep –E 或者直接使用 egrep均可以服务器
#!/bin/bash网络
read name
echo “$name is a test”
echo -e "OK! \n"
echo -e "OK! \c"
echo "接上面"
echo `date`
printf使用相似于c的该函数
test命令用于检查某个条件是否成立,它能够进行数值,字符和文件三个方面的测试
#!/bin/bash
num1=100
num2=100
if test $num1 -eq $num2
then
echo "equal"
else
echo "not equal"
fi
表示扩展的正则匹配方式,其中的/之类的不用转义
例子:echo ${_current_path} | sed -r "s#/root/(.*)/action.*#\1#g"
# 分隔符
() 取值符,匹配全部
\1 第一个取值
实例1:显示磁盘使用状况
命令:
df
输出:
[root@CT1190 log]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda7 19840892 890896 17925856 5% /
/dev/sda9 203727156 112797500 80413912 59% /opt
/dev/sda8 4956284 570080 4130372 13% /var
/dev/sda6 19840892 1977568 16839184 11% /usr
/dev/sda3 988116 23880 913232 3% /boot
tmpfs 16473212 0 16473212 0% /dev/shm
linux中df命令的输出清单的第1列是表明文件系统对应的设备文件的路径名(通常是硬盘上的分区)
最后一列是挂载点,表示的是一个目录
linux就是把各类文件,包括磁盘分区之类的都往目录结构上进行挂载,linux默认有三个分区,即boot分区,swap分区和根分区,这些分区由对应的物理存储空间,可是须要目录结构来进行访问,故就分配了/boot等目录预支对应
建立文件系统,命令是mkfs,在windows下一般叫格式化。建立文件系统这个操做通常针对的设备是分区,就是上文中说到的partition。固然也能够是某个文件,具体用法能够参见man mkfs。
一个例子
df -h
/dev/mapper/VolGroup-lv_root 39G 17G 21G 44% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 780K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/xvda1 488M 34M 419M 8% /boot
tmpfs 782M 0 782M 0% /run/user/0
[root@dbs_gauss1 ~]# fdisk -l
Disk /dev/xvda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00017f27
Device Boot Start End Blocks Id System
/dev/xvda1 * 2048 1050623 524288 83 Linux
/dev/xvda2 1050624 16777215 7863296 8e Linux LVM
/dev/xvda3 16777216 83886079 33554432 8e Linux LVM
Disk /dev/xvde: 429.5 GB, 429496729600 bytes, 838860800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/VolGroup-lv_root: 42.4 GB, 42404413440 bytes, 82821120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
这里能够看到,/dev/xvda磁盘被分为了3个分区,其中/dev/xvda1是做为了/boot分区来使用的,做为整个linux的启动分区。而其余两个分区没有被使用到
另外一块磁盘/dev/mapper/VolGroup-lv_root做为了主硬盘,没有进行分区,直接挂载到了/根目录
tmpfs文件系统,是一种基于内存的虚拟文件系统,通常挂载在目录/dev/shm下,载redhat中默认使用物理内存的一半
明白三个概念:设备,分区,目录!
在linux当中,每个设备都是用/dev文件夹下的一个文件来进行表示的
其中第一列的信息
如果文件系统或者是分区信息时,格式为 /dev/xxyN:dev是表示设备目录,xxyN是分区名
l /dev/表明设备所在的目录名。由于分区在硬盘上,硬盘是设备。而/dev/以后的全部这些文件表明全部可能的分区
l xx分区名的前两个字符表明分区所在设备的类型,例如hd(IDE磁盘)或者sd(SCSI磁盘)
l y代表分区所在的设备的编号,例如/dev/had(第一个IDE磁盘)或/dev/sdb(第二个SCSI磁盘)
l N表示分区编号,主分区1~4(扩展分区只能有一个,即四个主分区中仅有一个可以成为扩展分区),逻辑分区从5开始(扩展分区由全部的逻辑分区构成,逻辑分区理论上可有无限多个)
挂载的本质就是将分区关联到某一个目录的过程
一个目录的子目录能够被再次挂载到其余分区上
linux和windows最大区别在于,linux中硬件就是硬件,路径就是路径,然后者则是混淆在一块儿的。
fdisk -l
fisk /dev/sdb
输入m查看帮助菜单
输入p,设置为主分区
输入1,设置为分区号
直接回车,选择默认起始扇区
直接回车,选择默认结尾扇区
输入w,保存分区设置
mkfs.xfs -f /dev/sdb1
mount /dev/sdb1 /home/data
若是挂载点不存在,则须要先进行目录的建立
df -TH /home/data
/dev/sdb1 /home/data xfs defaults 0 0
useradd leichuang
passwd 123456789
查看文件的权限的详细信息
stat -c %a /var/rds/tomcat/conf/server.p12
600
查看文件的权限,而且以校验数字码的方式进行输出
http://blog.csdn.net/yu412346928/article/details/21622029
当前用户临时切换到超级用户下,以超级用户的权限去执行指定的命令。sudo所须要输入执行sudo命令的用户自身的口令,而非root用户口令。这样,即便你偶尔离开,但终端依然不会被居心险恶的人利用。
党用户执行sudo时,系统会去寻找/etc/sudoers配置文件,判断当前用户是否具有使用root的资格。对该配置的修改主要依靠命令visudo进行,其中的语法以下
user host = commands
User_Alias
Host_Alias
Cmnd_Alias
user表示使用者(这里也能够填入group名,在组名前加%),host是登陆主机的方式,而commands是具体命令
例如
switf localhost = /usr/bin/emerge
表示用户swift能够在本地(非ssh链接的状况下)使用emerge命令
%wheel localhost = /usr/bin/emerge, /usr/bin/ebuild, /usr/sbin/emerge-webrsync
标示wheel组同时具备3条命令的权限
Host_Alias hostalias = hostname1, hostname2, ...
User_Alias useralias = user1, user2, ...
Cmnd_Alias cmndalias = command1, command2, ...
为了避免频繁输入各个用户名,能够定义一些别名
通用别名ALL 代指全部可能的设置。
代码 2.8: 容许任何用户在非ssh时执行 shutdown |
||
ALL localhost = /sbin/shutdown
|
让一名用户像其余用户(非root用户)那样地运行程序是可行的。这很是有趣,你可使用另外一个用户(譬如网络服务器apache)的身份来运行程序或执行一些系统管理操做(好比杀死僵死进程)。
在/etc/sudoers文件中,在命令列表以前,能够在( 与 )之间列举须要改变身份的用户。
代码 2.12: 非root用户命令执行权限示例 |
Cmnd_Alias KILL = /bin/kill, /usr/bin/pkill swift ALL = (apache, gorg) KILL |
使用这一设定,用户能够运行sudo -u来选择他想担当的角色
代码 2.13: 像apache用户那样运行pkill |
$ sudo -u apache pkill apache |
可使用Runas_Alias指令为这些要切换身份的用户设置别名,它的用法与前面所讲的别名设置指令的用法类似。
默认状况,sudo要求用户提供本身的登陆口令来作身份验证。一旦输入了相应口令(密码),sudo会记忆它5分钟,用户要把任务集中在这段时间内来完成,不然就要每5分钟重复输入一次口令。
固然,这种默认行为是能够改变的:能够在/etc/sudoers中设定Defaults:指令来修改一名用户的默认行为。
例如,要将默认的5分钟修改成0分钟(即不记忆所输入口令):
代码 2.14: 更改时限 |
Defaults:swift timestamp_timeout=0 |
若是将timestamp_timeout设置为-1,sudo会永远记住用户口令,直至系统从新启动。
有一个设置能够在使用sudo时要输入所执行命令的所属用户口令,而不是执行sudo命令的用户口令。这一功能可由runaspw指令进行设定。下面示例演示了runaspw的用法,同时也演示了重复输入口令次数限制的设定方法
代码 2.15: 须要root口令而非用户john的口令 |
Defaults:john runaspw, passwd_tries=2 |
还有一个有趣的功能是保持DISPLAY变量不变,这样就能够运行一些X Window工具了:
代码 2.16: 保持DISPLAY变量的值不变 |
Defaults:john env_keep=DISPLAY |
使用Defaults:指令能够更改许多默认设置,要知详情,可在sudo手册中搜索Defaults。
若是很想容许一名用户使用sudo运行一些程序时无需输入任何口令,应当在命令列表前冠以NOPASSWD:,例如:
代码 2.17: 容许像root那样使用emerge,而无需口令 |
swift localhost = NOPASSWD: /usr/bin/emerge |
列出权限
运行sudo -l能够查看当前用户的sudo权限:
代码 3.1: 列出权限 |
$ sudo -l User swift may run the following commands on this host: (root) /usr/libexec/xfsm-shutdown-helper (root) /usr/bin/emerge (root) /usr/bin/passwd [a-zA-Z0-9_-]* (root) !/usr/bin/passwd root (apache) /usr/bin/pkill (apache) /bin/kill |
若在/etc/sudoers中设定了任何命令都不须要输入口令,那么在使用sudo -l时也不须要输入口令。不然,在口令未被sudo记忆时,依然要输入相应口令。
延长口令时限
默认状况下,sudo的验证口令会维持在5分钟内有效。若是用户想延长这一时间,能够运行sudo -v重设时间戳,这样就会又开始一个5分钟口令记忆时间。
代码 3.2: sudo口令时限延长 |
$ sudo -v |
相反,若要停掉当前时间戳,可以使用sudo -k.
# Defaults env_keep += "HOME"
注释此行的意思是,sudo运行某条命令时获取到的HOME路径是该用户本身自己的HOME路径
always_set_home: Always set $HOME to the target user's home directory