linux开关机自动启动python脚本
时间: 2023-11-07 12:03:34 浏览: 121
你可以使用进程管理工具supervisor来实现开机自启动python脚本。首先,你需要安装supervisor。然后,你可以创建一个supervisor的配置文件,指定要启动的python脚本和相关的参数。最后,你可以将supervisor添加到系统的自启动项中。
引用中提到,Linux系统会在启动时自动执行init.d目录下的可执行程序。因此,你可以将supervisor的启动脚本放置在init.d目录下,并按照一定格式编写这个脚本。
在supervisor的配置文件中,你需要指定要启动的python脚本的路径、启动命令和相关参数。可以使用引用中的方法,在启动命令中将python脚本作为参数传递给supervisor。
完成以上步骤后,你可以重新启动系统,supervisor会自动启动并执行你指定的python脚本。
相关问题
请用python调用Linux命令完成开关机
### 回答1:
你可以使用Python的Subprocess模块来调用Linux命令完成开关机操作。例如,你可以使用“subprocess.call(['shutdown', '-h', 'now'])”来关机,使用“subprocess.call(['reboot'])”来重启。
### 回答2:
我们可以使用`subprocess`模块来调用Linux命令完成开关机操作。下面是一个使用Python调用Linux命令开关机的示例代码:
```
import subprocess
def shutdown():
command = "sudo shutdown now"
subprocess.call(command, shell=True)
def restart():
command = "sudo reboot"
subprocess.call(command, shell=True)
def main():
choice = input("请选择操作:\n1. 关机\n2. 重启\n")
if choice == '1':
shutdown()
elif choice == '2':
restart()
else:
print("无效的选择")
if __name__ == "__main__":
main()
```
以上代码定义了两个函数`shutdown`和`restart`用于调用Linux命令实现关机和重启操作。`subprocess.call`函数用于执行命令,参数`shell=True`是用于打开shell执行命令。
在`main`函数中,我们使用`input`函数获取用户的选择,根据选择调用相应的函数执行对应的操作。
注意:在代码中使用了`sudo`命令,需要确保运行脚本的用户有执行相关命令的权限。
### 回答3:
在Python中可以使用`subprocess`模块来调用Linux命令完成开关机操作。
要开机,可以使用`subprocess.call()`函数来执行`sudo shutdown -r now`命令。该命令会立即重新启动系统。以下是一个示例代码:
```python
import subprocess
def turn_on():
subprocess.call(['sudo', 'shutdown', '-r', 'now'])
turn_on()
```
要关机,可以使用`subprocess.call()`函数来执行`sudo shutdown -h now`命令。该命令会立即关机系统。以下是一个示例代码:
```python
import subprocess
def turn_off():
subprocess.call(['sudo', 'shutdown', '-h', 'now'])
turn_off()
```
请注意,上述示例中使用了`sudo`命令,因此需要确保当前用户具有执行`sudo`命令的权限。如果需要在Python脚本中执行`sudo`命令,通常需要在执行脚本时输入密码。
另外,还可以使用`os.system()`来执行Linux命令。以下是以开机为例的示例代码:
```python
import os
def turn_on():
os.system('sudo shutdown -r now')
turn_on()
```
使用`subprocess`模块比使用`os.system()`更加灵活和安全,因为它可以更好地处理命令参数和返回值。
远程监控虚拟机上limux的硬盘和内存使用情况(每三秒刷新一次)并控制服务器的开关机,先用python连接到Linux,然后根据Linux的命令,去查询对应的进程、磁盘和内存,因为要显示到页面上,所以用django封装起来,把方法封装成接口,前端页面用elementui和vue画,通过axios调用封装好的接口,把服务器情况显示到页面上的代码。
首先,需要编写一个 Python 脚本来连接到远程的 Linux 服务器,并查询硬盘和内存的使用情况。可以使用 paramiko 库来实现 SSH 连接。以下是一个示例代码:
```python
import paramiko
import time
# SSH 连接信息
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('remote_host', username='username', password='password')
# 查询硬盘使用情况
stdin, stdout, stderr = ssh.exec_command('df -h')
disk_usage = stdout.read().decode('utf-8')
# 查询内存使用情况
stdin, stdout, stderr = ssh.exec_command('free -m')
memory_usage = stdout.read().decode('utf-8')
# 打印使用情况
print('Disk usage:')
print(disk_usage)
print('Memory usage:')
print(memory_usage)
# 关闭 SSH 连接
ssh.close()
```
接下来,需要使用 Django 框架来封装这个脚本,并把查询硬盘和内存使用情况的方法封装成接口。以下是一个示例代码:
```python
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import paramiko
# SSH 连接信息
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('remote_host', username='username', password='password')
@csrf_exempt
def get_disk_usage(request):
# 查询硬盘使用情况
stdin, stdout, stderr = ssh.exec_command('df -h')
disk_usage = stdout.read().decode('utf-8')
return JsonResponse({'disk_usage': disk_usage})
@csrf_exempt
def get_memory_usage(request):
# 查询内存使用情况
stdin, stdout, stderr = ssh.exec_command('free -m')
memory_usage = stdout.read().decode('utf-8')
return JsonResponse({'memory_usage': memory_usage})
```
最后,需要编写一个前端页面,使用 ElementUI 和 Vue.js 来实现。以下是一个示例代码:
```html
<template>
<div>
<el-button type="primary" @click="refresh">Refresh</el-button>
<el-card v-for="(item, index) in items" :key="index" class="box-card">
<div slot="header" class="clearfix">
<span>{{ item.title }}</span>
</div>
<div v-html="item.content"></div>
</el-card>
</div>
</template>
<script>
import axios from 'axios'
export default {
data () {
return {
items: [
{ title: 'Disk Usage', content: '' },
{ title: 'Memory Usage', content: '' }
]
}
},
methods: {
refresh () {
axios.get('/api/disk-usage/')
.then(response => {
this.items[0].content = response.data.disk_usage
})
axios.get('/api/memory-usage/')
.then(response => {
this.items[1].content = response.data.memory_usage
})
}
}
}
</script>
```
最后,在 Django 的 urls.py 文件中添加以下代码:
```python
from django.urls import path
from . import views
urlpatterns = [
path('api/disk-usage/', views.get_disk_usage),
path('api/memory-usage/', views.get_memory_usage),
]
```
这样就完成了一个远程监控 Linux 服务器硬盘和内存使用情况,并控制服务器开关机的应用。