‘壹’ linux 能否实现用户登录运行脚本
可以。用户登录时,Bash 首先执行全局登录脚本(由 root 建立) /etc/profile,然后在用户起始目录下依次寻找 .bash_profile、.bash_login、.profile 三个文件,执行最先找到的一个。可以用这种办法像 Netware 一样为不同的用户定制运行环境。 此外,用户退出登录时还可以运行 .bash_logout 脚本。
免费提供最新Linux技术教程书籍,入门自学书籍《linux就该这么学》,为开源技术爱好者努力做得更多更好
‘贰’ 高分求教:有一台Linux服务器,求教怎么通过bat批处理命令自动登录服务器并执行某个shell命令
装了 expect 的话:
#!/usr/bin/expect-f
spawntelnet10.1.18.8
expect"login:"#等待输入用户名提示
send"root "#输入用户名
expect"Password:"#等待输入密码提示
send"root "#输入密码
expect"#"#根据实际提示符修改
send"sh/update.sh "#执行脚本
expect"#"#根据实际提示符修改
send"exit "#退出telnet
expecteof
没有 expect:
#!/bin/bash
(
sleep1
echo'root'#用户名
sleep1
echo'root'#密码
sleep1
echo'sh/update.sh'#执行脚本
sleep1
)|telnet10.1.18.8
‘叁’ linux开机自启动命令
用户想要在linux开机的时候自启动相关的程序。那我们要怎么设置呢?下面由我为大家整理了linux下开机自启动命令的相关知识,希望对大家有所帮助!
linux下开机自启动命令
1.开机启动时自动运行程序
Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。
例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window。
扩展:其他情况下linux自启动程序命令
2.登录时自动运行程序
用户登录时,bash首先自动执行系统管理员建立的全局登录script :/etc/profile。然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、 /.profile,但只执行最先找到的一个。
因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。
3.退出登录时自动运行程序
退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。例如,在/.bash_logout中加入命令"tar -cvzf c.source.tgz *.c",则在每次退出登录时自动执行 "tar" 命令备份 *.c 文件。
4.定期自动运行程序
linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。
例如,建立文件crondFile,内容为"00 9 23 Jan * HappyBirthday",运行"crontab cronFile"命令后,每当元月23日上午9:00系统自动执行"HappyBirthday"的程序("*"表示不管当天是星期几)。 (/etc/crontab中配置命令即可)也可以
5.定时自动运行程序一次
定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令:
6.创建开机自启动脚本
1) 将你的启动脚本复制到 /etc/init.d目录下
以下假设你的脚本文件名为 test。
2) 设置脚本文件的权限
$ sudo chmod 755 /etc/init.d/test
3) 执行如下命令将脚本放到启动脚本中去:
$ cd /etc/init.d
$ sudo update-rc.d test defaults 95
注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了。该命令的输出信息参考如下:
update-rc.d: warning: /etc/init.d/test missing LSB informationupdate-rc.d: see
卸载启动脚本的方法:
$ cd /etc/init.d
$ sudo update-rc.d -f test remove
命令输出的信息参考如下:
Removing any system startup links for /etc/init.d/test … /etc/rc0.d/K95test /etc/rc1.d/K95test /etc/rc2.d/S95test /etc/rc3.d/S95test /etc/rc4.d/S95test /etc/rc5.d/S95test /etc/rc6.d/K95test
‘肆’ linux 如何开机自动运行sh脚本
要开机 运行只需将它加入到 rc.local ,一般为/etc/rc.d/rc.local 在其中加入以下行:sh /path/to/test.sh使用linux全局变量$?可以确定是否执行,如if [$? eq 0] the,echo "succeed!fi。
‘伍’ 如何在LINUX中在系统启动时自动执行一个执行脚本的相关推荐
1.
如果是开机马上执行的脚本,可以将脚本写到rc.local中;
2.
如果是用户登录后自动执行脚本,可以将脚本写到相应的用户目录下“~/.bash_profile”,若脚本“~/.bash_profile”不存在,可以直接拷贝“/etc/profile”命名为“~/.bash_profile”;
3.
如果是要任一用户登录后自动执行脚本,可以将脚本写到“/etc/profile”中。
‘陆’ linux开机启动会依次加载哪些脚本
1、相关基础知识点x0dx0a 1)redhat的启动方式和执行次序是: x0dx0a加载内核 x0dx0a执行init程序 x0dx0a /etc/rc.d/rc.sysinit # 由init执行的第一个脚本 x0dx0a /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式 x0dx0a /etc/rc.d/rc.local #相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中)x0dx0a /sbin/mingetty # 等待用户登录 x0dx0ax0dx0a在Redhat中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作,包括: x0dx0a调入keymap以及系统字体 x0dx0a启动swapping x0dx0a设置主机名 x0dx0a设置NIS域名 x0dx0a检查(fsck)并mount文件系统 x0dx0a打开quota x0dx0a装载声卡模块 x0dx0a设置系统时钟 x0dx0ax0dx0a等等。 x0dx0a /etc/rc.d/rc则根据其参数指定的运行模式(运行级别,你在inittab文件中可以设置)来执行相应目录下的脚本。凡是以Kxx开头的,都以stop为参数来调用;凡是以Sxx开头的,都以start为参数来调用。调用的顺序按xx从小到大来执行。(其中xx是数字、表示的是启动顺序)例如,假设缺省的运行模式是3,/etc/rc.d/rc就会按上述方式调用 /etc/rc.d/rc3.d/下的脚本。 x0dx0ax0dx0a值得一提的是,Redhat中的运行模式2、3、5都把/etc/rc.d/rc.local做为初始化脚本中的最后一个,所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登录之前执行的命令。 x0dx0a init在等待/etc/rc.d/rc执行完毕之后(因为在/etc/inittab中/etc/rc.d/rc的 x0dx0a action是wait),将在指定的各个虚拟终端上运行/sbin/mingetty,等待用户的登录。 x0dx0ax0dx0a至此,LINUX的启动结束。x0dx0a 2、init运行级别及指令x0dx0ax0dx0a一、什么是INIT: x0dx0ainit是Linux系统操作中不可缺少的程序之一。 x0dx0a所谓的init进程,它是一个由内核启动的用户级进程。 x0dx0a内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 x0dx0a内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。x0dx0a二、运行级别 x0dx0a那么,到底什么是运行级呢? x0dx0a简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同的功能。 x0dx0a不同的运行级定义如下 x0dx0a# 0 - 停机(千万不能把initdefault 设置为0 ) x0dx0a# 1 - 单用户模式 # s init s = init 1x0dx0a# 2 - 多用户,没有 NFS x0dx0a# 3 - 完全多用户模式(标准的运行级) x0dx0a# 4 - 没有用到 x0dx0a# 5 - X11 多用户图形模式(xwindow) x0dx0a# 6 - 重新启动 (千万不要把initdefault 设置为6 ) x0dx0a这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是放在/etc/rc.d 目录下的文件。在大多数的Linux 发行版本中,启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6) x0dx0a 3):chkconfig 命令(redhat 操作系统下)x0dx0ax0dx0a不像DOS 或者 Windows,Linux 可以有多种运行级。常见的就是多用户的2,3,4,5 ,很多人知道 5 是运行 X-Windows 的级别,而 0 就x0dx0a是关机了。运行级的改变可以通过 init 命令来切换。例如,假设你要维护系统进入单用户状态,那么,可以使用 init 1 来切换。在 Linux 的运行级的切换过程中,系统会自动寻找对应运行级的目录/etc/rc[0-6].d下的K 和 S 开头的文件,按后面的数字顺序,执行这x0dx0a些脚本。对这些脚本的维护,是很繁琐的一件事情,Linux 提供了chkconfig 命令用来更新和查询不同运行级上的系统服务。 x0dx0ax0dx0a语法为: x0dx0a chkconfig --list [name] x0dx0a chkconfig --add name x0dx0a chkconfig --del name x0dx0a chkconfig [--level levels] name x0dx0a chkconfig [--level levels] name x0dx0a chkconfig 有五项功能:添加服务,删除服务,列表服务,改变启动信息以及检查特定服务的启动状态。 x0dx0a chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回 true,否则返回false。 --level 选项可以指定要查看的运行级而不一定是当前运行级。 x0dx0ax0dx0a如果在服务名后面指定了on,off 或者 reset,那么 chkconfig 会改变指定服务的启动信息。on 和 off 分别指服务在改变运行级时的启动和停止。reset 指初始化服务信息,无论有问题的初始化脚本指定了什么。 x0dx0ax0dx0a对于 on 和 off 开关,系统默认只对运行级 3,4, 5有效,但是 reset 可以对所有运行级有效。指定 --level 选项时,可以选择特定的运行级。 x0dx0a x0dx0a需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init 不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。 x0dx0ax0dx0a选项介绍: x0dx0a --level levels x0dx0ax0dx0a指定运行级,由数字 0 到 7 构成的字符串,如: x0dx0a --level 35 表示指定运行级3 和5。 x0dx0ax0dx0a要在运行级别3、4、5中停运 nfs 服务,使用下面的命令:chkconfig --level 345 nfs off x0dx0a --add name x0dx0ax0dx0a这个选项增加一项新的服务,chkconfig 确保每个运行级有一项启动(S) 或者 杀死(K) 入口。如有缺少,则会从缺省的init 脚本自动x0dx0a建立。 x0dx0a --del name x0dx0ax0dx0a用来删除服务,并把相关符号连接从 /etc/rc[0-6].d 删除。 x0dx0a --list name x0dx0ax0dx0a列表,如果指定了name 那么只是显示指定的服务名,否则,列出全部服务在不同运行级的状态。 x0dx0ax0dx0a运行级文件 x0dx0ax0dx0a每个被chkconfig 管理的服务需要在对应的init.d 下的脚本加上两行或者更多行的注释。 x0dx0ax0dx0a第一行告诉 chkconfig 缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。 x0dx0ax0dx0a第二行对服务进行描述,可以用 跨行注释。 x0dx0ax0dx0a例如,random.init 包含三行: x0dx0a # chkconfig: 2345 20 80 x0dx0a # description: Saves and restores system entropy pool for x0dx0a # higher quality random number generation. x0dx0ax0dx0a表明 random 脚本应该在运行级 2, 3, 4, 5 启动,启动优先权为20,停止优先权为 80。 x0dx0ax0dx0a好了,介绍就到这里了,去看看自己目录下的/etc/rc.d/init.d 下的脚本吧。 x0dx0ax0dx0a设置自启动服务:chkconfig --level 345 nfs on x0dx0a2. 实例介绍:x0dx0a 1、在linux下安装了apache 服务(通过下载二进制文件经济编译安装、而非rpm包)、apache 服务启动命令: /server/apache/bin/apachectl start 。让apache服务运行在运行级别3下面。x0dx0a命令如下: x0dx0a 1)touch /etc/rc.d/init.d/apachex0dx0a vi /etc/rc.d/init.d/apachex0dx0a chown -R root /etc/rc.d/init.d/apachex0dx0a chmod 700 /etc/rc.d/init.d/apachex0dx0a ln -s /etc/rc.d/init.d/apache /etc/rc.d/rc3.d/S60apache #S 是start的简写、代表启动、K是kill的简写、代表关闭。60数字x0dx0a代表启动的顺序。(对于iptv系统而言、许多服务都是建立在数据库启动的前提下才能够正常启动的、可以通过该数字就行调整脚本的启动顺序)) x0dx0a apache的内容:x0dx0a #!/bin/bashx0dx0a #Start httpd servicex0dx0a /server/apache/bin/apachectl startx0dx0ax0dx0a至此 apache服务就可以在运行级别3下 随机自动启动了。(可以结合chkconfig 对启动服务进行相应的调整)。x0dx0a由于相关变量定义不同, 所以以下启动顺序仅供参考x0dx0a在Redhat Redflag centos fc linux系统里面脚本的启动x0dx0a先后:x0dx0a第一步:通过/boot/vm进行启动 vmlinuzx0dx0a第二步:init /etc/inittabx0dx0a第三步:启动相应的脚本,并且打开终端x0dx0arc.sysinitx0dx0arc.d(里面的脚本)x0dx0arc.localx0dx0a第四步:启动login登录界面 loginx0dx0a第五步:在用户登录的时候执行sh脚本的顺序:每次登录的时候都会完全执行的x0dx0a/etc/profile.d/filex0dx0a/etc/profilex0dx0a/etc/bashrcx0dx0a/root/.bashrcx0dx0a/root/.bash_profilex0dx0a编者注:x0dx0aNtsysv命令也可以实现根据不同运行级别启动不同的服务,但是一定要注意,使用ntsysv命令,默认采用图形的方式管理服务的启动,但是在这种情况下设置的服务,只对当前的运行级别有效果!因此,建议最好还是使用 chkconfig 来进行服务的管理。
‘柒’ 如何在 Linux 启动时自动执行命令或脚本
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。有用户想要在Linux启动时候自动执行命令脚本,应该怎么设置呢?这篇文章主要介绍了详解如何在 Linux 启动时自动执行命令或脚本,主要有两种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
方法步骤
在启动时执行 Linux 脚本
有两种传统的方法可以实现在启动时执行命令或脚本:
方法 #1 - 使用 cron 任务
除了常用格式(分 / 时 / 日 / 月 / 周)外,cron 调度器还支持 @reboot 指令。这个指令后面的参数是脚本(启动时要执行的那个脚本)的绝对路径。
然而,这种方法需要注意两点:
a) cron 守护进程必须处于运行状态(通常情况下都会运行),同时
b) 脚本或 crontab 文件必须包含需要的环境变量(如果有的话,参考 StackOverflow 获取更多详细内容)。
方法 #2 - 使用 /etc/rc.d/rc.local
这个方法对于 systemd-based 发行版 Linux 同样有效。不过,使用这个方法,需要授予 /etc/rc.d/rc.local 文件执行权限:
# chmod +x /etc/rc.d/rc.local
然后在这个文件底部添加脚本。
下图说明如何分别使用 cron 任务和 rc.local 运行两个示例脚本(/home/gacanepa/script1.sh 和 /home/gacanepa/script2.sh)。
script1.sh:
#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
script2.sh:
#!/bin/bash
SITE="Tecmint.com"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt
*启动时执行 Linux 脚本 *
记住,一定要提前给两个示例脚本授予执行权限:
$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh
在登录或注销时执行 Linux 脚本
要在登录或注销时执行脚本,分别需要使用 ~.bash_profile 和 ~.bash_logout 文件。多数情况下,后者需要手动创建。在每个文件的底部,添加调用脚本代码,如前面例中所示,就可以实现这个功能。
补充:Linux基本命令
1.ls命令:
格式::ls [选项] [目录或文件]
功能:对于目录,列出该目录下的所有子目录与文件;对于文件,列出文件名以及其他信息。
常用选项:
-a :列出目录下的所有文件,包括以 . 开头的隐含文件。
-d :将目录像文件一样显示,而不是显示其他文件。
-i :输出文件的i节点的索引信息。
-k :以k字节的形式表示文件的大小。
-l :列出文件的详细信息。
-n :用数字的UID,GID代替名称。
-F : 在每个文件名后面附上一个字符以说明该文件的类型,“*”表示可执行的普通文 件;“/”表示目录;“@”表示符号链接;“l”表示FIFOS;“=”表示套接字。
2.cd命令
格式:cd [目录名称]
常用选项:
cd .. 返回上一级目录。
cd ../.. 将当前目录向上移动两级。
cd - 返回最近访问目录。
3.pwd命令
格式: pwd
功能:显示出当前工作目录的绝对路径。
相关阅读:Linux主要特性
完全兼容POSIX1.0标准
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
支持多种平台
‘捌’ linux 如何自动远程执行脚本
1、安装sshpass
2、sshpass -p “passwd” ssh -p22 root@$dst_ip “a.sh”
注意a.sh是目标主机里的脚本。
‘玖’ 嵌入式 Linux 如何以root身份自动登录 如何开机自动执行脚本文件
嵌入式 Linux 如何以root身份自动登录 并开机自动执行脚本文件
下面操作步骤记录如下:
要设置自启动程序需要解决两个问题:1、系统自动登录;2、自动执行脚本,
1)系统自动登录
(1)修改/etc/inittab
在inittab中,有如下配置
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
表示系统可以有六个控制台,可以用ALT+(F1~F6)来切换。而/sbin/agetty就是一个登陆验证程序,执行它,会提示用户输入用户名和密码,然后启动一个指定的shell(在passwd文件中指定的)。
所以,我们只需将其修改为不执行agettty,而是执行自己编写的一个脚本,就可以跳过用户名和密码的输入。修改如下:
1:2345:respawn:/root/logintest tty1 9600
这里我在/root/下放了一个测试脚本,这样系统启动时就会执行那个脚本,脚本内容:
#!/bin/sh
/bin/login -f root
脚本其实就是执行了一个root用户的登陆而已。
2)自动执行程序
方法有两种,一种是将要执行的代码放到1)中的/root/logintest的后面;
另一种是将要执行的代码放到/etc/profile文件的后面即可。
免费提供最新Linux技术教程书籍,入门自学书籍《linux就该这么学》,为开源技术爱好者努力做得更多更好