用Python3、NetCore、Shell分别开发一个Ubuntu版的定时提醒(附NetCore跨平台两种发布方式)

简介: Python3 与 NetCore基础语法对比:https://www.cnblogs.com/dunitian/p/9103673.html 彩色版最新版:https://www.cnblogs.com/dotnetcrazy/p/9111200.html 新增直接运行py文件的补充:请在py前面加上:#!/usr/bin/env python3 然后再执行 sudo chmod +x ./task.py 下次运行直接 ./task.py 平时经常用定时提醒来提高工作效率,到了Linux。

 Python3 与 NetCore基础语法对比:https://www.cnblogs.com/dunitian/p/9103673.html

彩色版最新版:https://www.cnblogs.com/dotnetcrazy/p/9111200.html

新增直接运行py文件的补充:请在py前面加上:#!/usr/bin/env python3 然后再执行 sudo chmod +x ./task.py 下次运行直接 ./task.py

平时经常用定时提醒来提高工作效率,到了Linux。。。。蒙圈了,以前C#写的不能跨平台啊,于是就有了这篇文章~(有些人喜欢用番茄工作法,这个算是个福利了)

跳转到Python:https://www.cnblogs.com/dotnetcrazy/p/9111200.html#python

先NetCore吧:(old code:me

核心代码:Process.Start("notify-send", "友情提醒 10分钟过去了");

原理说明:调用了ubuntu的notify-send的弹窗提醒,自己控制循环和定时

补充知识:RuntimeInformation.IsOSPlatform(OSPlatform.xxx) 这个来判断是什么系统,OSPlatform是一个结构体

定时提醒:Thread.Sleep(new TimeSpan(0, 10, 0));

代码比较简单就不详说了,主要讲讲环境部署+发布

using System;
using System.Threading;
using System.Diagnostics;
using System.Runtime.InteropServices;

//Old: https://github.com/dunitian/DNTLive/blob/master/Software/LoTTimer/Program.cs
namespace netcore
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                try
                {
                    Console.WriteLine(DateTime.Now.ToString());
                    Thread.Sleep(new TimeSpan(0, 10, 0));
                    MyBeep();
                }
                catch
                {
                    //异常还不结束?
                    break;
                }
            }
        }
        private static void MyBeep()
        {
            if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
            {
                Console.WriteLine("当前系统为Linux");
                Process.Start("notify-send", "友情提醒 10分钟过去了");
                //用shell启动指定程序+命令
                //Process.Start(new ProcessStartInfo("notify-send", "友情提醒 10分钟过去了") { RedirectStandardOutput = true });
            }
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                Console.WriteLine("当前系统为Windows");
                // frequency:提示音的频率,介于 37 到 32767 赫兹之间。// duration:提示音的持续时间,以毫秒为单位。
                Console.Beep(500, 1500);
            }
            else
            {
                Console.WriteLine("精力有限,暂不支持");
            }
        }
    }
}

来走一个流程:(基本上跟官网走一遍,我贴几个链接和图)

我以前写的文章:https://www.cnblogs.com/dunitian/p/6745562.html#netcore2.1

官方文档(多看看官方文档):https://www.microsoft.com/net/download/linux-package-manager/ubuntu18-04/sdk-current

2.创建一个netcore的console应用:dotnet new console

3.安装VSCode(直接下载安装deb包即可):http://www.cnblogs.com/dunitian/p/6661644.html

4.安装VSCode的C#扩展

5.打开刚才那个文件夹,F5试运行一下,新版的貌似不用自己配置运行路径什么的了

6.刚才代码贴了,coding一下。调试运行什么的和win下没什么大区别

7.1发布吧,讲一下官方推荐的发布方式(适合开发人员),到项目目录下,Ctrl+ALT+T调出终端==》 dotnet publish –c release

参考:https://docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-cli

这种轻量级方式发布,把这两个文件弄出去就ok了

运行效果:dotnet xxx.dll,如果你改了程序名字,对应配置名字也记得改哦~

7.2发布第二种方式【很多人不是开发人员也不想装runtime】(指定应用程序运行时(自宿主应用),这种方式将会把指定平台的Core CLR打包进去):

发布前先做一件事情,添加你需要支持的哪些系统,我这边win10和Ubuntu18就好了(别忘了)

在<PropertyGroup>标签里面添加<RuntimeIdentifiers>win10-x64;ubuntu.18.04-x64;</RuntimeIdentifiers>

 

系统命名以及系统支持参考:(貌似Android也是支持的)

https://docs.microsoft.com/zh-cn/dotnet/core/rid-catalog
https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json

修复依赖+发布指定系统的runtime:dotnet publish -c Release -r ubuntu.18.04-x64

其实netcore2.x系列不用再输入restore了,它会自动执行restore

自托管的包挺大的

 

发现自动生成了个netcore无后缀文件,而且是可执行文件【为基础薄弱的同志普及下:1.看颜色 2.ll 查看有没有执行权限】,直接运行就OK了

来试着发布一个win10的:dotnet publish -c Release -r win10-x64

拖到win10来测试~ok,可以跨平台(其他平台一样,发布的时候换下操作系统即可)

 

这次轮到Python了

 其实核心代码都差不多,几句话解决

import os
import time

while True:
    print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
    time.sleep(600)
    os.system("notify-send 友情提醒 10分钟过去了")

运行(其实你可以自己把他设置为可执行程序【chmod +x ./task.py】,这样在终端中直接./task.py就运行了)

补充:请在py前面加上:#!/usr/bin/env python3 

Shell:

while :
do
 sleep 600
 echo time past
 notify-send 友情提醒 已经过了10分钟了
 echo -e '\a'
done

 

我稍微说下Linux日常使用的体验,可以略过这段:(这段放最后吧,不然认为我是打广告的就不太好了o((>ω< ))o)

以前开发环境都是Win10或者Win系列,后来Net跨平台了,慢慢的开发专用笔记本也换成了Ubuntu,关于Linux基础和环境等就不说了,可以看我以前写的文章(https://www.cnblogs.com/dunitian/p/4822808.html#linux

Linux基本上还用的惯,之前开发工具突然间从VS变成了JetBrains Rider (Netcore的Console程序在linux下有时候有些莫名错误,所以才搭上了Rider)和 VSCode,陡然间稍有不适,用了几天就熟悉了。所以开发相关的Linux基本上和Win差不多

关键是日常比较蛋疼,贴个常用deb安装包,https://pan.baidu.com/s/1kVI8eft 这个就不细说了可以参考我以前在Ubuntu16.04上发的文章(http://www.cnblogs.com/dunitian/p/6670560.html),截图自带的勉强能用Alt+PrtScr,用不惯可以用国产deepin-screenshot或者用hotshots也行。播放器可以自己安装一下:sudo apt-get  install  smplayer

 

其他的其实也没啥了,文档有WPS,音乐有网易云,输入法有搜狗,词典可以选择有道,浏览器反正谷歌嘛。暂时不需要Linux版的录屏软件(有好的可以推荐哦~)【记得我前面讲dock的时候提过一款(http://www.cnblogs.com/dunitian/p/6681832.html)】

 

作者: 毒逆天
打赏: 18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z
本文版权归作者和博客园共有。欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接!
目录
相关文章
|
7天前
|
数据采集 存储 JSON
Python爬虫开发:BeautifulSoup、Scrapy入门
在现代网络开发中,网络爬虫是一个非常重要的工具。它可以自动化地从网页中提取数据,并且可以用于各种用途,如数据收集、信息聚合和内容监控等。在Python中,有多个库可以用于爬虫开发,其中BeautifulSoup和Scrapy是两个非常流行的选择。本篇文章将详细介绍这两个库,并提供一个综合详细的例子,展示如何使用它们来进行网页数据爬取。
|
7天前
|
数据采集 数据挖掘 数据处理
Python爬虫开发:爬取简单的网页数据
本文详细介绍了如何使用Python爬取简单的网页数据,以掘金为例,展示了从发送HTTP请求、解析HTML文档到提取和保存数据的完整过程。通过这个示例,你可以掌握基本的网页爬取技巧,为后续的数据分析打下基础。希望本文对你有所帮助。
|
7天前
|
数据采集 数据挖掘 数据处理
Python爬虫开发:爬取简单的网页数据
在数据分析中,数据的获取是第一步。随着互联网的普及,网络爬虫成为获取数据的重要手段。本文将详细介绍如何使用Python爬取简单的网页数据。
|
11天前
|
开发工具 Python Windows
【Python专栏】搭建Pyhthon运行环境及开发环境 | 安装Python | 安装PyCharm
【Python专栏】搭建Pyhthon运行环境及开发环境 | 安装Python | 安装PyCharm
41 4
|
11天前
|
机器学习/深度学习 Java PHP
1:Python开发:初识Python
本文概览编程语言层次,从高级语言如Python、Java到低级语言如C、汇编的不同特性。PHP适合网页开发但有限制,而Python和Java则兼具前后端能力,Python以开发效率见长,Java则在执行效率上更胜一筹。Python变种众多,如Jython、IronPython等。安装Python后可通过解释器运行.py文件,实现如用户登录验证等功能。变量命名需遵循规则,避免使用数字开头或Python关键字。Python支持多种执行方式,包括直接运行脚本或进入交互模式,且默认采用UTF-8编码处理文本。
|
14天前
|
API C语言 开发者
Python如何成为跨平台编程的超级巨星:系统调用深度探索
【8月更文挑战第6天】Python凭借简洁的语法和强大的库支持,在编程领域中脱颖而出。其跨平台特性是基于CPython等解释器的设计理念,使得Python程序能在不同操作系统上运行而无需修改代码。Python标准库提供的抽象层隐藏了系统间的差异,加之ctypes等扩展机制,使开发者能高效地编写兼容性强且性能优异的应用。例如,在Windows上利用ctypes调用GetSystemTime系统API获取当前时间,展现了Python深入系统底层的强大能力和灵活性。随着技术演进,Python将继续巩固其作为首选编程语言的地位。
20 3
|
15天前
|
安全 Linux 开发者
跨界英雄Python:一招搞定跨平台兼容性难题🎯
【8月更文挑战第5天】Python 展现了卓越的跨平台能力,使开发者能在多种操作系统上编写一致的代码。利用标准库如 `os` 和 `pathlib`,可以轻松进行文件系统操作;借助 `subprocess` 可安全执行外部命令;Tkinter 则简化了跨平台 GUI 的创建。这些工具和技术让 Python 成为处理跨平台任务的理想选择,使开发者能更专注于应用程序的核心功能。
11 3
|
3天前
|
测试技术 数据安全/隐私保护 网络虚拟化
干货 | 如何用python实现每天定时备份交换机配置文件? 真香~
干货 | 如何用python实现每天定时备份交换机配置文件? 真香~
|
14天前
|
Linux 数据安全/隐私保护 iOS开发
从入门到精通:Python 系统编程中的跨平台兼容性攻略
【8月更文挑战第6天】在编程领域,Python 以简洁强大著称。系统编程时,确保代码能在不同平台(如 Windows、Linux 和 macOS)上良好运行至关重要。本文探讨 Python 跨平台兼容性的关键点,帮助理解各系统间的差异,例如文件路径、权限管理和进程控制的不同。通过使用 `os` 和 `subprocess` 模块,可以编写出既灵活又兼容的代码。例如,使用 `os.path.join()` 处理路径差异,`subprocess.run()` 进行进程管理。此外,还需关注环境变量和权限管理等方面的平台特性。掌握这些技巧,您将能更自信地开发跨平台的系统程序。
42 0