扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
要充分理解本文,必须具备Windows 环境下桌面应用程序的工作经验,我认为读者对如何使用 Linux 桌面有一个基本的了解。使用一个运行的 Linux 计算来机探讨本文的概念和示例是很有帮助的。
创新互联专注于夏县企业网站建设,响应式网站建设,电子商务商城网站建设。夏县网站建设公司,为夏县等地区提供建站服务。全流程定制网站建设,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
有时候第一次在 Linux 上运行一个应用程序需要一点额外工作。有些应用程序,比如服务器服务,可能无法安装为服务,因此您需要从命令行启动这些应用程序。对于启动这些应用程序的用户帐户而言,需要在应用程序文件中设置执行许可标志 (x)。
Linux 在内核空间或用户空间运行进程。用户空间 是操作系统的区域,应用程序通常在此运行。简单地说,每个用户帐户有其自己的用户空间,应用程序在这个领域内运行。
默认情况下,只有 root 用户有权访问内核空间。root 用户 是 Linux 中的超级用户,相当于 Windows 中的管理员帐户。在 root 用户帐户下运行应用程序可能会引起安全风险,是不可取的。
很多服务器服务需要 root 权限启动服务。然而,服务启动后,root 帐户通常会将其移至服务帐户。严格地说,Linux 中的服务帐户 才是标准的用户帐户。主要区别是服务帐户仅用于运行一个服务,而不是为任何实际登录的用户准备的。
您可以使用 chmod 命令在一个文件中设置执行权限。在 Linux 中,umask 设置通常用来防止下载的文件被执行,也有充分的理由相信,因为它有助于维护 Linux 计算机的安全性。
大多数 Linux 发行版具有一个值为 022 的 umask 设置,这意味着,默认情况下一个新文件权限设置为 644。权限的数字表示形式采用读 (4)、写 (2)、执行 (1) 的格式。因此,默认权限为 644 的应用程序下载意味着文件所有者有读写权限,而组用户和其他用户只有读权限。
例如,为每个人赋予一个文件的执行权限,使用 chmod a+x 命令。a 表示所有人,加号 (+) 表示添加,而 x 表示执行。同样地,如果应用程序是一个服务器服务,您应该确保只有授权帐户才有权执行此服务。
如果一个应用程序能够在标准用户帐户权限下运行,但只有特定组中的用户才需要使用它,您可以将该组所有者权限设置为可执行,然后将这些用户添加到该组中。
更具体地说,您可以在一个可执行文件中设置访问控制列表 (ACL) 权限,赋予特定用户或组权限来运行该应用程序。使用 setfacl 实用工具设置 ACL 权限。
对于这些需要以 root 用户启动进程的应用程序,比如服务器服务,您有几个选择。总结了允许用户执行需要 root 权限的服务器服务的各种选项。
作为 root 用户 不推荐用于服务器服务。当用户已经知道 root 密码而且应用程序泄露不是首要关注问题时,可用于应用程序。
SetUID 由于安全问题,不推荐使用。SetUID 允许标准用户以另一个用户方式,比如 root 用户,执行一个文件。
sudo 很常用,并且被认为是一个很好的实践。sudo 授予一个用户或组成员权限以执行可能额外需要 root 权限的文件。该用户不需要知道 root 密码。
带有文件权限的标准用户帐户 在一个文件上为用户所有者、组所有者或其他人(所有人)设置执行权限。这是授予那些不需要 root 权限来执行应用程序的用户的常用方法。
带有 ACL 权限的标准用户帐户 使用较少,但是如果您不想授予一个用户 sudo 访问或者更改文件的权限,这也是一个可行的解决方案。在一个文件上使用 setfacl 命令,您可以授予一个特定用户或用户组执行该文件的权力。
在管理 Linux 服务器时,从命令行运行应用程序是一项基本的任务。很多应用程序使用 shell 脚本(类似于 Windows 批处理文件 .bat)来启动应用程序并执行其他任务,比如设置变量以及为其他用户分配进程。例如,应用程序可能需要一个 Java™ Virtual Machine (JVM) 来执行。那样的话,shell 脚本可以设置适当的环境变量,然后执行 Java 命令来运行 Java Archive (JAR) 或类文件。这同样适用于使用 Perl、Python、甚至 C# 的应用程序。(当然,C# 编译的应用程序可以在 Linux 上运行)
从命令行或者 shell 提示符执行应用程序的一个常用方法是使用 ./ 命令。如果您在 Linux 中使用句号 (.) 和正斜杠 (/),就意味着告诉环境您想要以可执行文件运行该文件。例如,运行一个名为 myapp 的可执行文件,您可以使用 ./myapp 命令。同样地,您可以在文件名之前加上语言环境,比如:
sh php python perl java
但更多情况下,套装应用程序使用 shell 脚本,以 #! 符号设置环境变量提供该语言的运行时可执行路径,比如 #!/usr/bin/python。您也应该熟悉这种方法。
清单 1 使用 catalina.sh 默认脚本通过 ./ 方法启动 Apache Tomcat 应用程序服务器。然后,使用 sh 方法启动服务器。因为默认端口是 8080,标准用户不需要对其进行特别修改就可以启动该服务。
如果您维护多个Linux服务器,则有时您希望在所有服务器上运行相同的命令。例如,您可能希望安装/升级软件包,修补内核以及更新配置等。如果您必须登录到每个服务器并手动运行相同的命令,那将是一项繁琐的工作。
这篇文章是关于一个管理工具,它允许您一次在许多不同的机器上运行相同的命令。
通过ClusterSSH,您可以同时在多个主机上进行相同的更改。它提供了一个特殊的控制台界面,您在控制台中输入的任何内容都会自动发送到任意数量的主机。
在Linux上安装ClusterSSH
在Ubuntu,Debian或Linux Mint上安装ClusterSSH:
$ sudo apt-get install clusterssh
要在CentOS或RHEL上安装ClusterSSH,首先需要设置EPEL存储库,然后运行以下命令。
$ sudo yum install clusterssh
要在Fedora上安装ClusterSSH,只需运行:
$ sudo yum install clusterssh
配置ClusterSSH
安装后,第一步是定义要在其上运行命令的主机群集。为此,请按如下方式创建系统范围的ClusterSSH配置文件。
$ sudo vi / etc / clusters
clusters = my_cluster my_cluster2
my_cluster = host1 host2 host3 host4
my_cluster2 = host5 host6
如果您需要特定于用户的ClusterSSH配置,只需使用〜/ .csshrc而不是/ etc / clusters。在上面的示例配置中,我定义了两个集群:“my_cluster”由四个主机组成,“my_cluster2”包含两个主机。群集是您要登录并运行命令的一组主机。
当您使用任何用户定义的群集启动ClusterSSH时,它将使用ssh登录到群集中的各个主机,并在主机上运行任何用户类型的命令。
启动ClusterSSH
要启动ClusterSSH,请按如下方式运行cssh命令。
$ cssh -l dev my_cluster
在上文中,“dev”是群集中所有主机的登录ID,“my_cluster”是群集名称。
如果需要,可以指定单个主机名而不是群集名。
$ cssh -l dev host1 host2 host3
一旦CSSH执行命令时,它会弹出用于单个主机的XTerm窗口,以及标记的一个小窗口“CSSH [2]”,其是ClusterSSH控制台窗口。无论您在控制台窗口中输入什么,都将同时出现在各个主机的XTerm窗口中。基本上,您可以通过单一控制台窗口控制所有XTerm窗口。
如果要将某些命令运行到特定的XTerm窗口,只需将焦点切换到Xterm窗口,然后像往常一样键入命令。
以下屏幕截图显示了ClusterSSH的运行情况,其中群集中有五个主机,左上角的控制台窗口是您应该键入要在所有五个主机上运行的命令的位置。
转自 嘉为教育-rhce认证_rhce培训_linux培训_linux认证_linux考证
题主你好,
从服务器上下载文件或向服务器上传文件最常用的命令当属scp了,使用方法也简单.
一.先说题主问题中的情况,即从服务器上往回拿文件(官话一点的表达:从服务器上将文件下载到本地):
scp 服务器用户名@服务器ip:文件的绝对路径 要将文件保存到本地哪
举例来说,我的服务器地址是1.1.1.1,用户名为hellofriend,并且在服务器上的/home/hellofriend/下有个名为ok的文件,则我想将服务器上的这个ok文件下载到本地的根目录,/,下用到的命令为:
scp hellofriend@1.1.1.1:/home/hellofriend/ok /
命令执行完成后,会提示你输入hellofriend这个用户的密码,密码输入完成后,回车,正常情况下,你在根目录下就能看到ok文件了.
*.新手注意事项:
a.ip地址和文件路径中间有个冒号;
b.文件路径一般用绝对路径,即从根开始找;
c.不要忘了写你要将文件保存在本地的哪里;
-----
二.再说如何将本地文件上传到服务器,这个不细说,命令和上面的差不多:
scp 本地的文件路径 服务器用户名@服务器ip:要保存在服务器的哪个位置
如我要将本地根目录下的ok文件上传到1.1.1.1这台服务器的/home/hellofriend目录下,则命令为:
scp /ok root@1.1.1.1:/home/hellofriend/
执行命令后,输入密码,回车,正常情况下文件就上传成功了.
-----
写在最后: 上面命令写的其实相对死板一些,其实还有一些小技巧,题主用的多了就能了解了,这里先不过多展开.
=====
希望可以帮到题主, 欢迎追问.
留此备查。
screen命令类似于“虚拟桌面”的概念,可以启动一个Linux下的虚拟桌面,在其中可以和普通终端一样执行各种命令。
如果系统中没有screen命令,可以用 apt install screen 来进行安装。
screen命令的基本用法有:
screen 启动一个虚拟桌面
在启动后的虚拟桌面中,按Ctrl+a 然后d(注意这个过程中Ctrl一直按住,也就相当于Ctrl+a 然后Ctrl+d),可以从虚拟桌面返回之前的终端,此时如果虚拟桌面中还有命令或进程在执行,将继续执行,即使退出了这个终端也仍将继续执行。这样就实现了后台执行命令或服务。
如果再想要查看这个虚拟桌面中的情况,执行screen -r即可。
如果有多个screen虚拟桌面在执行中,可以用screen -ls列出所有的桌面,然后按照桌面开始的序号(例如是1234),执行screen -r 1234或screen -x 1234就可以进入该桌面查看,然后再用Ctrl+a,d命令组合退出桌面。
如果要真正退出虚拟桌面(结束该桌面及其中正在运行的进程),在桌面中用exit命令退出即可。
如果要给启动的虚拟桌面起一个名字,可以用类似 screen -S test 这样的命令,这将启动一个名为test的虚拟桌面,以后可以用screen -x test命令来进入查看。
如果想要一条命令用screen启动一个后台进程并且退出(保持后台运行,类似于服务进程),可以用类似下面的命令:
screen -dmS test top
这将启动一个 名为 test 的虚拟桌面,然后在其中执行top命令,然后退出该桌面。
这样,我们再结合Linux中的启动执行方法,就可以制作自己的服务进程了。
下面设置自启动脚本的方法启动仅供参考:
方法一:使用crontab
方法二:
很多时候需要Ubuntu在开机的时候执行一些指定的命令,这里对操作方法进行记录。
在 /etc/init.d/ 中创建自己的开机运行脚本
# 这里的文件名 mystart 可以修改为任何你喜欢的名称,但是必须放在/etc/init.d/目录中
cd /etc/init.d
sudo vim /etc/init.d/mystart.sh
写入需要执行的命令,
#!/bin/bash
### BEGIN INIT INFO
# Provides: tuzixini
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: self define auto start
# Description: self define auto start
### END INIT INFO
# 上面的部分也必须写上,后面放上你需要开机执行的命令,这里是挂载一个硬盘
sudo mount /dev/sdb1 /opt/disk
修改脚本文件权限(将命令中的mystart.sh替换成实际的脚本文件名称)
sudo chmod 755 /etc/init.d/mystart.sh
加入开机启动(将命令中的mystart.sh替换成实际的脚本文件名称)
sudo update-rc.d mystart.sh defaults 90
ok,完成,后面系统启动的时候就会自动运行这段命令。
下面是另一段参考:
第一步、先建立screen name
shellscreen -dmS test
第二步、发送要执行的命令
shellscreen -r test -p 0 -X stuff "top"
第三步、发送一个回车符,让top命令运行起来
shellscreen -r test -p 0 -X stuff $'\n'
参数说明:
-r 恢复/进入一个screen
-p 0 指定第一个(从0开始)window,一个screen里可以有几个window,这里只需要指定第一个,不然会在某些情况下不生效。
-X 执行一个指定的screen支持的command
stuff 是-X的第一个参数,也是screen支持的一个command,意思是粘贴一个string
"top" 是粘贴的string 内容
$'\n' 是粘贴一个回车符进去,以此来执行screen里面的top命令
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流