linux开机启动shell脚本里切换用户中怎样切换多个用户啊?

如何在LINUX中在系统启动时自动执行一个执行脚本_百度知道
如何在LINUX中在系统启动时自动执行一个执行脚本
提问者采纳
ol>如果是开机马上执行的脚本,可以将脚本写到“/etc/profile”中.bash_profile”.local中,可以将脚本写到rc.bash_profile”不存在,若脚本“~/.bash_profile”,可以直接拷贝“/etc/profile”命名为“~/;如果是要任一用户登录后自动执行脚本;如果是用户登录后自动执行脚本,可以将脚本写到相应的用户目录下“~/
其他类似问题
为您推荐:
系统启动的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前访客身份:游客 [
:kernel-headers-2.6.32-431.29.2.el6.x86_64.rpm...
:感谢博主!照着你的教程,捣腾了四五天,终于安装...
:您好!我执行到安装kernel-devel这一步了,下载k...
:这个分析和没分析一样
:sudo rpm -Uvh ftp://195.220.108.108/linux/cen...
:用iterator就好了
:求助楼主啊.....新浪网盘失效了啊..
:直接用360强制删除
今日访问:1
昨日访问:37
本周访问:63
本月访问:627
所有访问:15258
Linux从开机到用户登入期间发生的事情
发表于3年前( 14:41)&&
阅读(407)&|&评论()
0人收藏此文章,
&h3&一、BIOS 加电自检 &/h3&
&br /&当你按电源开关开机时,电脑会首先去启动BIOS(基本输入输出系统),BIOS一般是集成在主板上的.
&br /&BIOS 的工作
&br /&1.检测连接硬件,比如显卡,内存,磁盘等等,检测的目的是以后把这些设备信息提供给操作系统&/p&
&br /&2.寻找启动磁盘,每一种BIOS都会有开机启动菜单,可以在菜单里设置以哪个设备启动系统
&br /&比如:光驱,硬盘,网络等等,这个菜单可以设置多个选项,依照设置次序在设备上寻找启动信息&/p&
&p&3.找到了启动硬盘,接着BIOS就会在磁盘上找启动扇区,找到内核启动系统.&/p&
&h3&二,加载MBR&/h3&
&p&众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。&/p&
&p&系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。&/p&
&h3&三,Boot Loader&/h3&
&p&Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。&/p&
&p&Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。&/p&
&p&我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。&/p&
&p&系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。&/p&
&p&那么我们就看看grub的内容 它存在于 /boot/grub中
&br /&GRUB有几个重要的文件,STAGE1、STAGE1.5、STAGE2
&br /&STAGE1:它只有512字节,通常放在MBR中,它的作用很简单,就是在系统启动时用于装载STAGE2并将控制权交给它。
&br /&STAGE2:GRUB的核心,所有的功能都是由它实现。
&br /&STAGE1.5:介于STAGE1和STAGE2之间,是它们的桥梁,因为STAGE2较大,通常都是放在一个文件系统当中的,但是STAGE1并不能识别文件系统格式,
&br /&所以才需要STAGE1.5来引导位于某个文件系统当中的STAGE2。根据文件系统格式的不同,STAGE1.5也需要相应的文件,如:e2fs_stage1_5,fat_stage1_5,分别用于识别ext和fat的文件系统格式。它存放于1-63的柱面之间.
&br /&引导顺序如下:STAGE1-&;STAGE1.5-&;STAGE2,&/p&
&p&以下是我的linux中的grub.conf中的内容:&/p&
&p&# grub.conf generated by anaconda
&br /&# Note that you do not have to rerun grub after making changes to this file
&br /&# NOTICE:  You have a /boot partition.  This means that
&br /&#          all kernel and initrd paths are relative to /boot/, eg.
&br /&#          root (hd0,0)
&br /&#          kernel /vmlinuz-version ro root=/dev/sda2
&br /&#          initrd /initrd-[generic-]version.img
&br /&#boot=/dev/sda
&br /&default=0
&br /&timeout=5
&br /&splashimage=(hd0,0)/grub/splash.xpm.gz
&br /&hiddenmenu
&br /&title CentOS (2.6.32-279.el6.i686)
&br /&    &strong&root (&/strong&hd0,0)
&br /&    &strong&kernel&/strong& /vmlinuz-2.6.32-279.el6.i686 ro root=UUID=b48a3c42-c2a0-42a2-a47f-1cb6b1d9f5c9 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
&br /&    &strong&initrd&/strong& /initramfs-2.6.32-279.el6.i686.img&/p&
&p&最重要的内容已经加黑,&strong&root (&/strong&hd0,0) 用来设置kernel与initrd两项内容的根地址。&strong&kernel&/strong&表示内核,&strong&initrd&/strong&是用在内核启动时能过访问硬盘文件的。title:一个操作系统引动的标头,可以使多个
&br /&root :指明所需文件存在于哪个磁盘哪个分区上 (hd0,0)表示第一个硬盘,第一个分区,可参考/boot/grub/device.map
&br /&kernel:内核文件的名字,并且会有一些加载内核时的参数 or代表以只读方式加载
&br /&initrd:包含一些附加的驱动程序&/p&
&h3&四,加载内核&/h3&
&p&内核启动后会向bios查询电脑的所有硬件信息,然后自己接手下来管理这些设备,以便提供给linux使用
&br /&内核会试着驱动这些设备,这些设备的驱动一部分包含在内核中,叫做静态驱动,一部分以模块的方式(动态)存放文件系统中,由
&br /&于此时还未挂载任何文件系统,因此还不能使用文件系统中的模块,这里只能驱动在内核中存在的硬件驱动程序的对应设备.想驱动内核中未包含的硬件驱动就需要加载文件系统.
&br /&内核会尝试挂载根文件系统,根文件系统至少包含 /etc /bin /sbin /lib /dev 这5大目录
&br /&他们5个缺一不可.都会导致系统无法启动
&br /&根文件系统挂载是以只读方式挂载的,因为这时linux还在启动阶段,并不稳定,避免破坏系统资料&/p&
&h3&五, 调用init&/h3&
&p&(依据inittab文件来设定运行等级)&/p&
&p&内核被加载后,第一个运行的程序便是/sbin/init&/p&
&pre&执行init程序&br /&/etc/rc.d/rc.sysinit
# 由init执行的第一个脚本&br /&/etc/rc.d/rc $RUNLEVEL
# $RUNLEVEL为缺省的运行模式&br /&/etc/rc.d/rc.local&br /&/sbin/mingetty
# 等待用户登录&/pre&
&h4&sysinit:&/h4&
&pre&&font size="4" face="微软雅黑"&
/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作,包括:&br /&
调入keymap以及系统字体&br /&
启动swapping&br /&
设置主机名&br /&
设置NIS域名&br /&
检查(fsck)并mount文件系统&br /&
打开quota&br /&
装载声卡模块&br /&
设置系统时钟&br /&
等等。&/font&&/pre&
&h4&inittab:&/h4&
&p&其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:&/p&
&p&0:关机&/p&
&p&1:单用户模式&/p&
&p&2:无网络支持的多用户模式&/p&
&p&3:有网络支持的多用户模式&/p&
&p&4:保留,未使用&/p&
&p&5:有网络支持有X-Window支持的多用户模式&/p&
&p&6:重新引导系统,即重启&/p&
&h4&rc.local:&/h4&
&p&你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:&/p&
&p&# This script will be executed *after* all the other init scripts.
&br /&# You can put your own initialization stuff in here if you don’t
&br /&# want to do the full Sys V style init stuff.&/p&
&p&rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。&/p&
&p&init进程是非内核进程中第一个被启动运行的,因此它的进程编号PID的值总是1。init读它的配置文件/etc/inittab,决定需要启动的运行级别(Runlevel)。从根本上说,运行级别规定了整个系统的行为,每个级别(分别由0到6的整数表示)满足特定的目的。如果定义了initdefault级别,这个值就直接被选中,否则需要由用户输入一个代表运行级别的数值。&/p&
&br /&输入代表运行级别的数字之后,init根据/etc/inittab文件中的定义执行一个命令脚本程序。缺省的运行级别取决于安装阶段对登录程序的选择:是使用基于文本的,还是使用基于X-Window的登录程序。&/p&
&br /&rc命令脚本程序我们已经知道,当运行级别发生改变时,将由/etc/inittab文件定义需要运行哪一个命令脚本程序。这些命令脚本程序负责启动或者停止该运行级别特定的各种服务。由于需要管理的服务数量很多,因此需要使用rc命令脚本程序。其中,最主要的一个是/etc/rc.d/rc,它负责为每一个运行级别按照正确的顺序调用相应的命令脚本程序。我们可以想象,这样一个命令脚本程序很容易变得难以控制!为了防止这类事件的发生,需要使用精心设计的方案。&/p&
&br /&对每一个运行级别来说,在/etc/rc.d子目录中都有一个对应的下级目录。这些运行级别的下级子目录的命名方法是rcX.d,其中的X就是代表运行级别的数字。比如说,运行级别3的全部命令脚本程序都保存在/etc/rc.d/rc3.d子目录中。在各个运行级别的子目录中,都建立有到/etc/rc.d/init.d子目录中命令脚本程序的符号链接,但是,这些符号链接并不使用命令脚本程序在/etc/rc.d/init.d子目录中原来的名字。如果命令脚本程序是用来启动一个服务的,其符号链接的名字就以字母S打头;如果命令脚本程序是用来关闭一个服务的,其符号链接的名字就以字母K打头。&/p&
&br /&许多情况下,这些命令脚本程序的执行顺序都很重要。如果没有先配置网络接口,就没有办法使用DNS服务解析主机名!为了安排它们的执行顺序,在字母S或者K的后面紧跟着一个两位数字,数值小的在数值大的前面执行。如:/etc/rc.d/rc3.d/S50inet就会在/etc/rc.d/rc3.d/S55named之前执行(S50inet配置网络设置,55named启动DNS服务器)。存放在/etc/rc.d/init.d子目录中的、被符号链接上的命令脚本程序是真正的实干家,是它们完成了启动或者停止各种服务的操作过程。当/etc/rc.d/rc运行通过每个特定的运行级别子目录的时候,它会根据数字的顺序依次调用各个命令脚本程序执行。它先运行以字母K打头的命令脚本程序,然后再运行以字母S打头的命令脚本程序。对以字母K打头的命令脚本程序来说,会传递Stop参数;类似地对以字母S打头的命令脚本程序来说,会传递Start参数。编写自己的rc命令脚本在维护Linux系统运转的日子里,肯定会遇到需要系统管理员对开机或者关机命令脚本进行修改的情况。&/p&
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID1807378空间积分0 积分59阅读权限10帖子精华可用积分59 信誉积分131 专家积分0 在线时间54 小时注册时间最后登录
白手起家, 积分 59, 距离下一级还需 141 积分
帖子主题精华可用积分59 信誉积分131 专家积分0 在线时间54 小时注册时间最后登录
论坛徽章:0
我把SVN的服务放在了 /etc/rc.sysinit
svnserve&&-d -r xxx 可以成功 但是已root身份启动总不好,SVN的db已经规划成svn用户和组可访问,
请问在启动脚本中可以指定切换为svn用户再启动svnserve进程吗?
查svnserve 无参数指定程序的userid.
svnserve&&--help
usage: svnserve [options]
Valid options:
&&-d [--daemon]& && && && &: daemon mode
&&--listen-port arg& && &&&: listen port (for daemon mode)
&&--listen-host arg& && &&&: listen hostname or IP address (for daemon mode)
&&--foreground& && && && & : run in foreground (useful for debugging)
&&-h [--help]& && && && &&&: display this help
&&--version& && && && && & : show program version information
&&-i [--inetd]& && && && & : inetd mode
&&-r [--root] arg& && && & : root of directory to serve
&&-R [--read-only]& && && &: force read only, overriding repository config file
&&-t [--tunnel]& && && && &: tunnel mode
&&--tunnel-user arg& && &&&: tunnel username (default is current uid's name)
&&-T [--threads]& && && &&&: use threads instead of fork
&&-X [--listen-once]& && & : listen once (useful for debugging)
&&--pid-file arg& && && &&&: write server process ID to file arg
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分26739阅读权限90帖子精华可用积分26739 信誉积分543 专家积分0 在线时间958 小时注册时间最后登录
巨富豪门, 积分 26739, 距离下一级还需 13261 积分
帖子主题精华可用积分26739 信誉积分543 专家积分0 在线时间958 小时注册时间最后登录
论坛徽章:1
su -l svn -c &command&复制代码
==========GNU/Linux FreeBSD==========
GNU’s not Unix, but U its plural form is Unixen.
Freedom. Friends. Features. First.
大卢瑟-Bob
UID空间积分0 积分11926阅读权限90帖子精华可用积分11926 信誉积分919 专家积分0 在线时间3307 小时注册时间最后登录
大富大贵, 积分 11926, 距离下一级还需 8074 积分
帖子主题精华可用积分11926 信誉积分919 专家积分0 在线时间3307 小时注册时间最后登录
论坛徽章:0
ssh &user&@localhost &command&
UID空间积分0 积分40阅读权限10帖子精华可用积分40 信誉积分68 专家积分0 在线时间50 小时注册时间最后登录
白手起家, 积分 40, 距离下一级还需 160 积分
帖子主题精华可用积分40 信誉积分68 专家积分0 在线时间50 小时注册时间最后登录
论坛徽章:0
可以放在子用户的crontab里面
创客168第4期:业务导向下的运维管理
创客168第4期沙龙活动聚焦运维话题,邀请优秀互联网企业技术专家分享运维平台建设,运维常用工具实践,成长型企业面临的运维和安全问题,应用性能管理解决方案等运维话题。,聚焦发展中的关键和共性运维技术难点。
----------------------------------------
活动日期:日
活动地点:长林咖啡书屋
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处我的一个Centos开机自启动脚本的制作
我的一个Centos开机自启动脚本的制作
一、切换到/etc/init.d/
二、制作sh脚本 vi andy.sh
#!/bin/sh &
#add for chkconfig &
#chkconfig:
#description: the description of the shell & #关于脚本的简短描述 &
#processname: andyStart & & & & & & & & & &#第一个进程名,后边设置自启动的时候会用到 &
#下面要启动服务的命令 &
/etc/init.d/ &
/etc/init.d/ &
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT; &
2345是指脚本的运行级别,即在2345这4种模式下都可以运行,234都是文本界面,5就是图形界面X
70是指脚本将来的启动顺序号,如果别的程序的启动顺序号比70小(比如44、45),则脚本需要等这些程序都启动以后才启动。
30是指关闭时,脚本的停止顺序号。
linux 下shell脚本执行多个命令的方法
1.每个命令之间用;隔开
说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。
2.每个命令之间用&&隔开
说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。
3.每个命令之间用||隔开
说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。
三、给脚本加上可执行权限:chmod +x andy.sh
四、利用chkconfig命令将脚本设置为自启动:chkconfig --add andy.sh
五、重启一下试试吧!
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'}

我要回帖

更多关于 shell脚本切换用户 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信