小编Dan*_*obs的帖子

Bash 不会将输出重定向到文件并在后台运行

我见过很多类似的问题,但问题是其他解决方案都没有解决我的问题。我想运行 2 个 python 脚本并使用 .redirect 将它们的输出重定向到单独的日志文件nohup。

此代码位于名为的 bash 脚本中startmain:

nohup python3 GUI.py > GUI.log 2>&1 &
nohup python3 main.py > main.log 2>&1 &
Run Code Online (Sandbox Code Playgroud)

当我运行时sh startmain,脚本都会执行,但不会将任何内容写入任一日志文件。

现在假设我startmain通过删除&行末尾的字符来更改代码:

nohup python3 GUI.py > GUI.log 2>&1
nohup python3 main.py > main.log 2>&1
Run Code Online (Sandbox Code Playgroud)

这段代码表示我不希望脚本在后台运行,因此只有 GUI.py 运行;然而,这里它实际上将 GUI.py 的所有输出定向到 GUI.log。我知道为什么 main.py 不在这里运行,但我不知道为什么在这种情况下输出会写入 GUI.log,但当我尝试在后台运行脚本时却不会。

知道我的问题是什么吗?我的问题与类似问题的不同之处在于我正在执行两个脚本,这可能是它不起作用的原因。

python bash stdout

4
推荐指数
1
解决办法
1862
查看次数

即使设置了lifecycleOwner,Android Fragment ViewModel数据绑定也不会更新UI

ViewModel我想在单击按钮时使用带有数据绑定的复选框来禁用复选框,但除非片段被销毁并重新创建,否则 UI 不会更新。

似乎有很多类似的问题,但最相似的问题似乎都可以通过设置来解决binding.lifecycleOwner,我已经完成了。

片段_复选框_数据绑定.xml:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".CheckboxDatabindingFragment">
    
    <data>
        <variable
            name="viewModel"
            type=".CheckboxDatabindingFragmentViewModel" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <CheckBox
            android:id="@+id/my_checkbox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:enabled="@{viewModel.checkboxEnabled}" />

        <Button
            android:id="@+id/my_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="@{() -> viewModel.startClicked()}" />
    
    </LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

CheckboxDatabindingFragment.kt:

class CheckboxDatabindingFragment() : Fragment() {
    private lateinit var viewModel: CheckboxDatabindingFragmentViewModel

    private var _binding: FragmentCheckboxDatabindingBinding? = null
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        viewModel = ViewModelProvider(this).get(CheckboxDatabindingFragmentViewModel::class.java )
        
        _binding …
Run Code Online (Sandbox Code Playgroud)

android android-fragments kotlin android-databinding android-viewmodel

2
推荐指数
1
解决办法
1132
查看次数